分布式实时处理系统:原理、架构与实现
上QQ阅读APP看书,第一时间看更新

2.2.3 差错控制

前文提到,数据传输可能会出错,那么我们需要检测数据是否出错,并控制出错时的重新发送,这就是所谓差错控制。差错控制也有很多方法,如接收方可以将接收到的数据发回给发送方,由发送方检测数据是否一致,不一致就重发。但为了节省数据检测的成本,我们往往会使用差错编码,即校验码,由接收方直接检查数据正确性。如果出错,则主动提示发送方重新发送数据,成功也会发送对应提示。同时由于数据可能在传输过程中彻底毁灭,因此为了确保接收方一定能接收到数据,也会加入计时器,发送方超过一定时间无法收到应答会自动重发数据。但这又带来另一个问题,也就是接收方可能会重复接收到同一帧。为了解决这一问题,我们为每一帧加上一个唯一序号,接收方可以根据该序号决定是否接收该帧。

这样我们就可以确保数据从一个节点可靠地发送给相邻节点,也就是接收方必定会接收且只接收一次某个数据正确的帧。