Gossip 协议

Gossip

Gossip 协议是计算机点对点通信的一个过程,基于病毒传播方式。一些分布式系统使用点对点Gossip 协议以保证数据被传播到群里的所有成员。

  • 比特币也是使用了Gossip协议来传播交易和区块信息

过程

  • 由种子节点发起,当一个种子节点有状态需要更新到网络中其他节点时,它会随机选择周围的几个节点散播信息
  • 收到消息的节点也会重复该过程,每次向未发送过且非发送节点传播消息,直到最终网络中所有节点都收到了信息

结果

  • 理论上最终所有节点都会收到信息,因此是一个最终一致性协议

相关属性:

  • 每个节点传播信息的周期
  • 选择k个邻接节点传播信息(fan-out)

优点:

  • 扩展性,网络节点可任意增加或减少,最终状态一致
  • 容错,任何节点的宕机和重启不会影响信息的传播
  • 去中心化,不要求任何中心节点,所有节点对等,不需要回到网络状况,只需要网络连通
  • 一致性收敛,指数性传播,不一致很快会收敛到一致,传播速度为logN
  • 简单,容易理解和实现

缺点:

  • 信息延迟,由于节点只会随机向几个节点发送信息,需要多次散播才到达全网,因此不适用于对实时性要求高的系统中
  • 消息冗余,存在同样的信息重复传播给同一节点的情况,造成了消息的冗余,同时也增加了收到消息并处理的节点的压力

两种类型:

  • 反熵
    • SI模型(Suspective-Infective),也叫简单蔓延
  • 谣言传播
    • SIR模型(Suspective-Infective-Removed),也叫复杂蔓延
类型模型节点状态more
反熵(anit-entropy)SI 模型Susceptible、Infectious意为减少系统中节点的混乱/不相似
谣言传播(rumor-mongering)SIR模型Susceptible、Infectious、Removed系统中消息的冗余情况理应有所缓解

节点间的三种通信方式

  • push:节点A将数据推送给B,B更新A中比自己新的数据
  • pull:A仅将必要的数据推送给B,B将比A新的数据推送给A更新
  • push/pull:pull之后,A再将比B新的数据推送给B更新

从上到下,虽然周期内消息数增加了,但从整体上看,push/pull收敛速度最快

复杂度分析:

  • pull:pull
  • push:push
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值