Gossip传播协议

开篇:

  • gossip是传播协议,在很多地方都有用到,比如在Redis集群中用于节点间消息通知,上下线,角色修改等消息传播等。
  • gossip顾名思义类似于病毒传播的场景,一传十,十传百。

流程:

  • gossip集群中每个节点都有其他n个或全部节点的通讯方式。
  • 开始时一个节点被感染,会从n个节点中选出规定节点数(比如10个)进行传播,传播后被感染一共11个节点再执行这个步骤,就会有新的110个节点被感染,以此类推,直到所有节点都被感染。
  • 当然在传播过程中会出现重复传播,不过经过一定次数传播后所有节点必定会都被传染,周期是O(logN) 。
  • 单个节点会多次传播,但不会重复传播,如果之前已经传染过邻居A,那下次就不会再传染了。

其他:

  • 传播过程中,传播节点不会管消息是否被接收到。
  • raft:gossip和raft有一些共性,都可以解决分布式一致性的问题,但raft有Leader、强一致,gossip是对等模式没有Leader、最终一致,可能这个对比不太贴切,raft一般会和paxos等强一致性算法作对比。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容