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

简介: Gossip协议,又称“八卦算法”,是一种去中心化的分布式通信协议。它通过节点间周期性地随机交换状态信息,实现元数据的高效同步与最终一致性。其核心机制包括直接邮寄、反熵和谣言传播,适用于大规模动态集群中的故障检测与数据复制,具有高容错、低耦合、易扩展等优点。

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,然后各个节点再更新自己的数据。

image.png

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

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

image.png

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

image.png

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

image.png

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

image.png

反熵通过异步方式修复数据差异,可以实现“最终一致性”,但是,节点之间需要相互交换和比较数据,如果集群节点数比较多且动态变化,代价就成直线上升(比如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传播新数据,这样其他节点都能更新到新数据。

image.png

未完待续

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

目录
相关文章
|
2月前
|
自然语言处理 测试技术 API
通义Qwen3-Max:大就是好
通义千问Qwen3-Max正式发布,参数超1T,训练稳定高效,在代码、推理、多语言等任务中表现卓越。预览版已登顶LMArena榜单前三,支持阿里云百炼API调用与Qwen Chat体验,敬请试用。
1511 32
|
存储 人工智能 安全
智存跃迁,阿里云存储面向 AI 升级全栈数据存储能力
一文总览阿里云存储产品创新与进展!
616 0
|
2月前
|
机器学习/深度学习 数据采集 运维
别等系统崩了才救火:智能化运维,才是真正的高可用!
别等系统崩了才救火:智能化运维,才是真正的高可用!
225 8
|
2月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
264 3
|
存储 缓存 NoSQL
gossip:借助流言蜚语实现数据一致性
gossip:借助流言蜚语实现数据一致性
337 11
|
2月前
|
自然语言处理 数据挖掘 关系型数据库
ADB AI指标分析在广告营销场景的方案及应用
ADB Analytic Agent助力广告营销智能化,融合异动与归因分析,支持自然语言输入、多源数据对接及场景模板化,实现从数据获取到洞察报告的自动化生成,提升分析效率与精度,推动数据驱动决策。
|
5月前
|
数据安全/隐私保护 Python
抖音私信脚本app,协议私信群发工具,抖音python私信模块
这个实现包含三个主要模块:抖音私信核心功能类、辅助工具类和主程序入口。核心功能包括登录
|
8月前
|
机器学习/深度学习 算法 PyTorch
10招立竿见影的PyTorch性能优化技巧,让模型训练速度翻倍
本文系统总结了PyTorch性能调优的关键技术,涵盖混合精度训练、PyTorch 2.0编译功能、推理模式优化、Channels-Last内存格式、图优化与变换、cuDNN基准测试、内存使用优化等多个方面。通过实证测试,文章详细分析了各技术的实现细节、优势及适用场景,如混合精度训练可显著提升计算效率和内存利用率,torch.compile()能自动优化代码生成以加速模型运行。此外,还探讨了推理模式的选择、卷积操作优化及模型构建的最佳实践。这些方法结合良好的编码习惯,有助于开发者构建高效、可扩展的深度学习应用。
551 3
10招立竿见影的PyTorch性能优化技巧,让模型训练速度翻倍
|
分布式数据库 数据库 容器
揭秘 Gossip 协议:节点之间的悄悄话
揭秘 Gossip 协议:节点之间的悄悄话
739 0