1、Gossip协议
Gossip协议:利用一种随机、带有传染性的方式,将信息传播到整个网络中,并在一定的时间内,使得系统内的所有节点数据一致。是最常用的实现最终一致性的算法。
2、Gossip的三板斧:
直接邮寄(Direct Mail):就是直接发送更新数据,当数据发送失败时,就将数据缓存下来,然后重传。
反熵(Anti-entropy):指的是集群中的节点,每隔一定时间就随机选择其他节点,然后相互交换自己的所有数据来消除两者之间的差异,实现最终数据的一致性。
谣言传播(Rumor mongering):指的是当一个节点有了新数据后,这个节点变成活跃状态,并周期性的联系其他节点向其发送新数据,直到所有节点都存储了该新数据。
3、实现反熵的方法
1、推:就是将自己的所有副本数据,推给对方,修复对方副本中的熵。
2、拉:就是拉取对方所有副本数据,修复自己副本中的熵。
3、推拉:就是同时修复自己副本和对方副本中的熵。
注意:因为反熵需要两个节点交换和对比自己所有副本中的数据,所以执行反熵时通讯成本会很高,所以不建议在实际中频繁的执行反熵,可以通过引入校验和(checksum)等机制,来降低需要对比的数据量和通讯信息等。