417.Gossip 两个节点(A、B)之间存在三种通信方式(push、pull、push&pull)
- push: A 节点将数据(key,value,version)及对应的版本号推送给 B 节点,B 节点更新 A 中比自己新的数据。
- pull:A 仅将数据 key,version 推送给 B,B 将本地比 A 新的数据(Key,value,version)推送给 A,A 更新本地。
- push/pull:与 pull 类似,只是多了一步,A 再将本地比 B 新的数据推送给 B,B 更新本地。
如果把两个节点数据同步一次定义为一个周期,则在一个周期内,push 需通信 1 次,pull 需 2 次,push/pull 则需 3 次,从效果上来讲,push/pull 最好,理论上一个周期内可以使两个节点完全一致。直观上也感觉,push/pull 的收敛速度是最快的。