千家信息网

如何理解Gossip 协议

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,如何理解Gossip 协议,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Gossip protocol 也叫 Epidemic Prot
千家信息网最后更新 2025年02月04日如何理解Gossip 协议

如何理解Gossip 协议,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Gossip protocol 也叫 Epidemic Protocol (流行病协议)。

原本用于分布式数据库中节点同步数据使用,后被广泛用于数据库复制、信息扩散、集群成员身份确认、故障探测等。

Gossip协议是基于六度分隔理论(Six Degrees of Separation)哲学的体现,简单的来说,一个人通过6个中间人可以认识世界任何人。数学公式是:

n表示复杂度,N表示人的总数,W表示每个人的联系宽度。依据邓巴数,即每个人认识150人,其六度就是1506 =11,390,625,000,000(约11.4万亿)。

基于六度分隔理论,任何信息的传播其实非常迅速,而且网络交互次数不会很多。比如Facebook在2016年2月4号做了一个实验:研究了当时已注册的15.9亿使用者资料,发现这个神奇数字的"网络直径"是4.57,翻成白话文意味着每个人与其他人间隔为4.57人。

- 原理 -

Gossip协议执行过程:

  • 种子节点周期性的散播消息 【假定把周期限定为 1 秒】。

  • 被感染节点随机选择N个邻接节点散播消息【假定fan-out(扇出)设置为6,每次最多往6个节点散播】。

  • 节点只接收消息不反馈结果。

  • 每次散播消息都选择尚未发送过的节点进行散播。

  • 收到消息的节点不再往发送节点散播:A -> B,那么B进行散播的时候,不再发给 A。

Goosip 协议的信息传播和扩散通常需要由种子节点发起。整个传播过程可能需要一定的时间,由于不能保证某个时刻所有节点都收到消息,但是理论上最终所有节点都会收到消息,因此它是一个最终一致性协议。

Gossip协议是一个多主协议,所有写操作可以由不同节点发起,并且同步给其他副本。Gossip内组成的网络节点都是对等节点,是非结构化网络。

- 消息类型 -

Gossip 协议的消息传播方式有两种:Anti-Entropy(反熵传播)和Rumor-Mongering(谣言传播)。

反熵传播是以固定的概率传播所有的数据。所有参与节点只有两种状态:Suspective(病原)、Infective(感染)。这种节点状态又叫做simple epidemics(SI model)。过程是种子节点会把所有的数据都跟其他节点共享,以便消除节点之间数据的任何不一致,它可以保证最终、完全的一致。缺点是消息数量非常庞大,且无限制;通常只用于新加入节点的数据初始化。

谣言传播是以固定的概率仅传播新到达的数据。所有参与节点有三种状态:Suspective(病原)、Infective(感染)、Removed(愈除)。这种节点状态又叫做complex epidemics(SIR model)。过程是消息只包含最新 update,谣言消息在某个时间点之后会被标记为 removed,并且不再被传播。缺点是系统有一定的概率会不一致,通常用于节点间数据增量同步。

- 通信方式 -

Gossip 协议最终目的是将数据分发到网络中的每一个节点。根据不同的具体应用场景,网络中两个节点之间存在三种通信方式:推送模式、拉取模式、Push/Pull。

  • Push: 节点 A 将数据 (key,value,version) 及对应的版本号推送给 B 节点,B 节点更新 A 中比自己新的数据

  • Pull:A 仅将数据 key, version 推送给 B,B 将本地比 A 新的数据(Key, value, version)推送给 A,A 更新本地

  • Push/Pull:与 Pull 类似,只是多了一步,A 再将本地比 B 新的数据推送给 B,B 则更新本地

如果把两个节点数据同步一次定义为一个周期,则在一个周期内,Push 需通信 1 次,Pull 需 2 次,Push/Pull 则需 3 次。虽然消息数增加了,但从效果上来讲,Push/Pull 最好,理论上一个周期内可以使两个节点完全一致。直观上,Push/Pull 的收敛速度也是最快的。

- 总结 -

综上所述,我们可以得出Gossip是一种去中心化的分布式协议,数据通过节点像病毒一样逐个传播。因为是指数级传播,整体传播速度非常快,很像现在美国失控的2019-nCoV(新冠)一样。它具备以下优势:

  • 扩展性:允许节点的任意增加和减少,新增节点的状态 最终会与其他节点一致。

  • 容错:任意节点的宕机和重启都不会影响 Gossip 消息的传播,具有天然的分布式系统容错特性。

  • 去中心化:无需中心节点,所有节点都是对等的,任意节点无需知道整个网络状况,只要网络连通,任意节点可把消息散播到全网。

  • 一致性收敛:消息会以"一传十的指数级速度"在网络中传播,因此系统状态的不一致可以在很快的时间内收敛到一致。消息传播速度达到了 logN。

  • 简单

同样也存在以下缺点:

  • 消息延迟:节点随机向少数几个节点发送消息,消息最终是通过多个轮次的散播而到达全网;不可避免的造成消息延迟。

  • 消息冗余:节点定期随机选择周围节点发送消息,而收到消息的节点也会重复该步骤;不可避免的引起同一节点消息多次接收,增加消息处理压力。

Gossip协议由于以上的优缺点,所以适合于AP场景的数据一致性处理,常见应用有:P2P网络通信、Apache Cassandra、Redis Cluster、Consul。

看完上述内容,你们掌握如何理解Gossip 协议的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

节点 消息 数据 传播 一致 网络 状态 周期 理论 过程 速度 同步 通信 一致性 两个 信息 分布式 方式 时间 概率 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 关于初一网络安全手抄报 关于学校网络安全排查报告 两台服务器怎么互相访问ftp 我国网络安全产品份额 客户机 服务器的例子 数据库原理与应用分析设计题 小学 网络安全 总结 仿真实训软件开发需求 南京网络技术公司排名 佛山支付软件开发方案 为什么服务器托管贵 网络安全责任制落实要求 汐表网络技术工作室 独立高防服务器租用 计算机网络技术网教 c 查询数据库返回结果集 华为服务器 远程管理卡 计算机网络技术抽象吗 计算机网络技术的英语 深圳基石测评网络技术有限公司 达梦数据库数据导入编码不一致 汽车灯光控制软件开发招聘 质量软件开发过程标准 为什么梦幻西游服务器进不了系统 苹果应用用什么软件开发的 网络安全日志网络管理员 方舟非主机服务器怎么开管理员 安卓网络安全测试工具 上海徳颐网络技术有限公司 软件开发流程 面试题
0