Gossip协议,中文可译为“流言蜚语”“闲话”或“八卦”,形象地描述了该协议的工作方式——类似于人类社会中的信息传播模式。Gossip协议最早由Xerox公司的Palo Alto研究中心(PARC)在一篇论文中提出,论文中将其称为八卦算法或病毒算法(Epidemic Algorithm),但最终“Gossip”这一名称被接受并沿用至今。

Gossip协议是一种去中心化的分布式协议,旨在实现多个节点之间的状态信息共享。其核心思想是通过随机选择节点进行信息交换,逐步将状态数据传播到整个系统。

在分布式系统中,元数据(Metadata)是描述系统状态的关键信息,例如节点负责的数据范围、主从关系、节点健康状态(是否故障)等。Gossip协议通过周期性的、轻量级的通信机制,确保这些元数据能够在节点间高效、可靠地同步。

Gossip 的基本工作模式

1)周期性活动: 每个节点定期(例如每秒)启动一轮Gossip。

2)随机对等选择: 节点从其已知的集群成员列表中随机选择一个或少数几个目标节点(通常是k个,k远小于总节点数N)。

3)信息交换: 节点向选中的目标节点发送其持有的部分或全部信息(例如,自身状态、已知的其他节点状态、元数据更新等),并从目标节点接收类似信息。

4)状态合并与更新: 节点根据接收到的信息更新本地状态。例如,如果收到的信息版本更新,则采纳新信息。

Gossip 的信息传播方式变体

Gossip协议主要是通过直接邮寄、反熵和谣言传播三种方式来实现数据的最终一致性。

直接邮寄

直接邮寄(Direct mail),当一个节点自身状态发生重要更新时(例如,它检测到一个新数据),它主动将这个更新推送给随机选择的邻居。这是信息快速传播的一种方式,但不保证送达。

如图所示:当节点A的数据更新时,会直接将新数据传给节点B、节点C,然后各个节点再更新自己的数据。

需要说明的是:当队列溢出或长时间无法访问其目的地时,消息可能会被丢弃,也就是说,只采用直邮的方式是无法实现最终一致性的。

反熵

反熵(Anti entropy/ Pull or Push-Pull style),中的熵是指混乱程度,在此处,熵可以理解成不同节点中数据的差异性。反熵就是指消除混乱程度,提升节点间数据的相似度,降低熵值。反熵主要有推、拉和推拉三种方式。

1)推方式,节点A定期选择节点B,将A的所有(或部分摘要)数据推送给B,让B修复其与A不一致的部分。

2)拉方式,节点A定期选择节点B,从B拉取其所有(或部分摘要)数据,修复A自身与B不一致的部分。

3)推拉方式,节点A选择节点B,双方交换数据并各自修复差异。这是最常见和鲁棒的方式。

反熵通过异步方式修复数据差异,可以实现“最终一致性”,但是,节点之间需要相互交换和比较数据,如果集群节点数比较多且动态变化,代价就成直线上升(比如k8s环境中检测节点故障,并动态维护集群节点状态)。因此,反熵方式适合节点数固定且有限的集群实现数据一致性。

谣言传播

谣言传播(Rumor mongering/ Hot-stuff Propagation),当一个节点有“新”信息(谣言)时,它会积极地向其他节点传播。如果一个节点收到了它之前未曾听闻的谣言,它也会变成一个活跃的传播者,继续向外散播。为了避免谣言无限传播,可以设置传播次数上限,或者当一个节点发现其大多数邻居都已经知道这个谣言时,它就停止主动传播,转为仅在被询问时才告知(即从“活跃”转为“被动”)。

// 定期执行,先随机选择集合S中的s1
// s1再随机选取集合S中的任意其他节点
// 不断解决两两之间的数据冲突
// 最终整个集合中的对象都会达成数据一致性
FOR SOME s1 belong to S DO
ResolveDifference[S,s1)
END LOOP

如图所示,当节点A有新数据时,会成为活跃节点,然后向集群中节点B,节点E传播该数据,节点C收到新数据之后也变成了活跃节点,然后向节点D传播新数据,这样其他节点都能更新到新数据。

未完待续

很高兴与你相遇!如果你喜欢本文内容,记得关注哦!!!

技术圈的“绯闻女孩”:Gossip是如何把八卦秘密传遍全网的?的更多相关文章

  1. 英语口语练习系列-C21-美式幽默

    1. 基础词汇 1.1 back [bæk] n. 后背 on the back 靠着背 sleep on the back 仰着睡 back of the chair 椅子的后背 stab sb. ...

  2. 分布式的CAP理论

    CAP是强一致性.可用性(实时可用).分区容忍性: Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性) 一般来说 P 是前提. ...

  3. 分布式一致性协议之:Gossip(八卦)算法

    Gossip算法因为Cassandra而名声大噪,Gossip看似简单,但要真正弄清楚其本质远没看起来那么容易.为了寻求Gossip的本质,下面的内容主要参考Gossip的原始论文:<<E ...

  4. Gossip算法

    Gossip算法因为Cassandra而名声大噪,Gossip看似简单,但要真正弄清楚其本质远没看起来那么容易.为了寻求Gossip的本质,下面的内容主要参考Gossip的原始论文:<<E ...

  5. [Hyperledger] Fabric系统中 peer模块的 gossip服务详解

    最近一直在看fabric系统中的核心模块之一——peer模块.在看peer的配置文件core.yaml的信息时,对其中的gossip配置选项很感兴趣.看了一上午,还是不能明白这个选项到底什么意思呢?表 ...

  6. 【协议】5、gossip 协议

    Gossip是一种去中心化.容错并保证最终一致性的协议. Background:分布式环境 Gossip是为了解决分布式遇到的问题而设计的.由于服务和数据分布在不同的机器上,节点之间的每次交互都伴随着 ...

  7. Consul实现原理系列文章2: 用Gossip来做集群成员管理和消息广播

    工作中用到了Consul来做服务发现,之后一段时间里,我会陆续发一些文章来讲述Consul实现原理.这篇文章会讲述Consul是如何使用Gossip来做集群成员管理和消息广播的. Consul使用Go ...

  8. 浅谈集群版Redis和Gossip协议

    昨天的文章写了关于分布式系统中一致性哈希算法的问题,文末提了一下Redis-Cluster对于一致性哈希算法的实现方案,今天来看一下Redis-Cluster和其中的重要概念Gossip协议. 1.R ...

  9. 一万字详解 Redis Cluster Gossip 协议

    Redis Cluster Gossip 协议 大家好,我是历小冰,今天来讲一下 Reids Cluster 的 Gossip 协议和集群操作,文章的思维导图如下所示. 集群模式和 Gossip 简介 ...

  10. Java实现画八卦

    八卦是由多个圆叠加而成,如果我们让每个圆都有自己的颜色,那么具体结构便一目了然,如下图所示: 显然只要令对应的圆颜色相同,就能达到我们预期的效果. 用Java就能轻松画出来: import java. ...

随机推荐

  1. VisualStudioCode 创建Vue 3.0 项目

    https://vitejs.cn/guide/#%E6%90%AD%E5%BB%BA%E7%AC%AC%E4%B8%80%E4%B8%AA-vite-%E9%A1%B9%E7%9B%AE第一步npm ...

  2. 前端开发系列039-基础篇之Video基础

    本文简单介绍HTML5中的video标签,包括video元素的简单介绍.基本使用以及常用事件和属性. 一.标签介绍 HTML5 规定了一种通过 Video 元素来包含视频的标准方法. Video标签用 ...

  3. bezier 曲线

    简介 bezier 曲线, 简单而言就是多项式曲线. 参考链接 https://www.zhihu.com/question/29565629 The Nurbs Book https://gitee ...

  4. sublime3 教程 比较好的

    因为不让转载 所以列出 地址http://www.cnblogs.com/figure9/p/sublime-text-complete-guide.html 关键技术要点: Ctrl + ←/→进行 ...

  5. Ansys 学习笔记

    简介 生成新的应力分析 局部分析 image 还有网格精度判定 要覆盖两个网格层才可以

  6. Draw.io Shortcuts

  7. SciTech-Management-Organizing:组织-RMM(Role Management Model):角色管理模型 的 民主共和 VS 层级结构明确的ARCI(责任分配矩阵)法则

    Organizing:组织-RMM(Role Management Model):角色管理模型 根据"人群"与"社会"的"民主"和" ...

  8. 盈鹏飞嵌入式带你玩转T113系列tina5 SDK(6)-添加心跳灯

    SBC-T113产品特性: 采用Allwinner公司Cortex-A7双核T113-i处理器,运行最高速度为1.2GHZ: 内置64-bit XuanTie C906 RISC-V协处理器: 支持J ...

  9. DBA 行业是否将会逐渐消亡?

    DBA 行业是否将会消亡? 最近几年由于企业数据上云.自动化运维.人工智能等技术的快速发展,让很多 DBA 感到焦虑,担心技术的变革会让自己饭碗不保,其实大可不必如此.新技术的到来意味着一些简单机械. ...

  10. windows 安装Zookeeper 配置集群

    Windows安装Zookeeper 并配置集群 1.安装java环境 ZooKeeper 在 Java 中运行,版本 1.8 或更高(JDK 8 LTS.JDK 11 LTS.JDK 12 - Ja ...