整活儿了,来看看“流言蜚语”算法的那点破事

本文介绍了Gossip协议,一种弱一致性共识算法,常用于分布式系统中。通过“直接邮寄”、“反熵”和“传谣”三种数据更新方式,Gossip协议确保数据的一致性。文章通过生动的比喻解释了协议的工作原理,并提到了一个在线模拟器帮助理解其传播过程。此外,还探讨了Gossip协议与六度分隔理论的联系。
摘要由CSDN通过智能技术生成

元旦的时候我看到一个特别离谱的谣言啊,具体是什么内容我就不说了,我怕脏了大家的眼睛。

但是,我看到一个群里传的那叫一个绘声绘色,大家讨论的风生水起的,仿佛大家就在现场似的。

这事吧本来我呵呵一笑也就过了。但是隔了一会我突然大腿一拍:这是个素材啊。

我可以和大家聊一个共识算法呀。

说到共识算法,大家首先想到的应该都是 Raft、Paxos、Zab 算法这类理解起来比较困难的强一致性算法。

但是还有一个弱一致性的共识算法比较好理解,Gossip 协议。

Gossip,先看这个单词,圈起来,要考的啊,这是一个六级词汇,也是考研单词,意思是“流言蜚语”。

接下来就带你简单的看看这个“流言蜚语”到底是怎么回事。

Gossip 协议

Gossip 协议最早提出的时间得追溯到 1987 年发布的一篇论文:《Epidemic Algorithms for Replicated Database Maintenance》

bitsavers.trailing-edge.com/pdf/xerox/p…

我第一次看到这个论文的名字的时候,我都懵逼了:这也没有 Gossip 的关键词呢。

主要是 Epidemic Algorithms 这两个单词,我又恰好认识。

Algorithms,算法,没啥说的。

Epidemic 是啥?

紧扣当下时事:

所以 Epidemic Algorithms 翻译过来就是流行病算法。

因此 Gossip 的学名应该是又叫做“流行病算法”,只是大家更喜欢叫它 Gossip 而已。毕竟,虽不喜欢听点儿“小道消息”呢?

说论文之前,先简单定个基调。

你觉得一致性协议最基础、最核心、最重要的一个动作是什么?

是不是数据更新?

为了保证各个节点的数据的一致性,必然就涉及到数据的更新操作。

所以,在论文的开篇介绍部分描述了三种方法来进行数据的更新:

  • Direct mail(直接邮件)
  • Anti-entropy(反熵)
  • Rumor mongering(传谣)

Direct mail(直接邮寄)

废话先不说了,直接上个图:

上面这图啥意思呢?

就是一共八个小圆点,假设每个都代表一个服务器,它们之间都是平等的关系,不存在中心节点、主从什么的关系。

其中最上面的红色节点表示该节点有数据变更了,于是把变更的数据直接通知给剩下的节点。

如果其他的节点上发生了数据变更也是同样的道理。

可以简单的理解为一个循环遍历,每发生一次数据变更,为了保持数据的一致性,就得进行一次循环遍历。

这个方案的优点很明显:简单、粗暴、直接。

但是缺点和优点一样明显,我们看看论文里面怎么说:

主要看 but 的部分:

首先不完全可靠,因为这个要求每个站点都必须知道所有站点的存在。但是实际情况是有的站点并不总是知道所有其他站点。

然后,信息(mail)有时会丢失,一旦丢失,就连最终一致性也保证不了,整个凉凉。

其实 Direct mail(直接邮寄)并不是论文里面主要讨论的方案,把它写在第一个起一个抛砖引玉的作用。

主要聊聊 Anti-entropy(反熵)和 Rumor-Mongering(传谣)这两个方案。

先定个整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值