`

Gossip 协议--分布式系统状态同步协议 - [分布式算法]

 
阅读更多

转:http://www.blogbus.com/matao13992-logs/189862945.html

Gossip  是一种被用在分布式的非强一致性系统中用来同步各节点状态的方法。它是一个最终一致性算法。

Gossip被设计成低 CPU开销和低网络带宽占用。因此非常适合大型的 P2P 网络。Gossip周期地随机地选择一个节点并发起一轮 Gossip会话.

两个节点(A、B)之间存在三种通信方式:

  • 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的收敛速度是最快的。

一个Gossip的节点的工作方式又分两种:

  • Anti-Entropy(反熵):以固定的概率传播所有的数据
  • Rumor-Mongering(谣言传播):仅传播新到达的数据
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics