gossip协议学习笔记

一、gossip是什么

gossip协议又称epidemic协议,是基于流行病传播方式的节点或进程之间信息交换的协议,在分布式系统中被广泛使用,比如我们可以使用gossip协议来确保网络中所有节点的数据一样。

gossip协议利用一种随机的方式将信息传播到整个网络中,并在一定时间内是的系统内的所有节点的数据一致。gossip其实是一种去中心化思路的分布式协议,解决状态在集群中的传播和状态一致性的保证这两个问题。

二、gossip协议的优势

2.1、可扩展性(Scalable)

gossip是可扩展的,一般需要O(logN) 轮就可以将信息传播到所有的节点,其中N代表节点的个数

2.2、容错(fault-tolerance)

网络中任何节点重启 或宕机都不会影响gossip协议的运行

2.3、健壮性(Robust)

gossip协议是去中心化协议,所以在集群中的所有节点都是对等的,没有特殊的节点,这样任何节点出问题都不会阻止其他节点继续发消息,任何节点都可以随时加入或离开,不会影响整个系统

2.4、最终一致性(Convergent consistency)

gossip协议实现信息指数级的快速传播,因此在有新信息需要传播时,消息可以快速地发送到全局节点,在有限的时间内能够做到所有节点都拥有最新的数据。

三、gossip协议在工程中的使用

  • DB replication
  • 消息传播
  • cluster membership
  • failure检测
  • overlay networks
  • aggregations(比如计算平均值、最大值及总和)

四、gossip协议的通信方式

  • Push:发起信息交换的节点 A 随机选择联系节点 B,并向其发送自己的信息,节点 B 在收到信息后更新比自己新的数据,一般拥有新信息的节点才会作为发起节点。

  • Pull:发起信息交换的节点 A 随机选择联系节点 B,并从对方获取信息。一般无新信息的节点才会作为发起节点。

  • Push&Pull:发起信息交换的节点 A 向选择的节点 B 发送信息,同时从对方获取数据,用于更新自己的本地数据。

猜你喜欢

转载自blog.csdn.net/shijinghan1126/article/details/108256897