Gossip协议

Gossip协议也可以被称之为流行病算法,留言算法,八卦算法,瘟疫算法,是一种最终一致性的分布式协议

可以理解为和(zab协议,paxios,raft)这种协议类似的协议

比特币就采取了Gossip协议来保证各个区块的信息同步的

实现

分布式节点中的节点,如果数据发生了变化,那么会定时(比如每隔1秒)广播该信息,该节点会在与它相邻的节点中随机选择K个节点,然后把变更信息同步给这K个节点,如果某个节点还没有接收过信息,那么在收到这个信息后,也会将这个信息同步给与它相邻的K个节点,依此类推,最终让整个系统中的节点同步到了这个信息

六度分隔理论

要说 Gossip 就不得不提“六度分隔理论”,简单的说:你和任何一个陌生人之间所间隔的人不会超过五个,也就是说,最多通过五个人你就能够认识任何一个陌生人。由时任哈佛大学的心理学教授 Stanley Milgram 在1967年提出。

Facebook 研究了已注册的15.9亿使用者资料,在2016年公布标题为 “Three and a half degrees of separation” 的研究结果。发现世界比人们想象的更紧密,世界上的每个人(至少在 Facebook 活跃的15.9亿人)平均通过3.57个人就可以与任意另外一个人产生联系。

优点

  1. 对于节点之间的网络连通和稳定性要求不高,反正每隔1S就会随机选择K个节点进行同步,直到相邻的所有节点同步完成
  2. 能够容忍网络上的节点随意的增加或者减少,比如增加了一个节点后,会有它相邻的节点对它进行数据同步
  3. 每个节点是平等的,没有中心化和主节点的概念,所以任意挂了一个节点也没事(不像raft和ZAB)

这让Gossop协议有很强的健壮性(表示在危险情况下系统生存的能力)

缺点

Gossip协议的缺点

  1. 存在系统中节点之间信息不一致的情况
  2. 每次随机选择节点,不能很好预测系统完全达到一致需要多少时间
  3. 同样由于随机选择节点,所以消息有可能重复发送给同一个节点,增加了网络压力和节点处理信息的压力

如果想要减少系统信息达到一致的时间,可以选择Goosip协议中的反熵模式(anti-Entropy)模式,即每次发送都是节点中所有的数据,这样很容易达到一致,但是这样,会增加网络压力,相反,我们也可以选择Gossip中的传谣模式(Rumor-Mongering)模式,只发送节点的变更信息,这样能减轻网络压力

Last modification:November 17, 2023
如果觉得我的文章对你有用,请随意赞赏