32 | 分布式共识(下):Multi Paxos、Raft与Gossip,分布式领域的基石
周志明
你好,我是周志明,这节课我们继续学习分布式共识算法。
在上节课的最后,我通过一个批准阶段重复失败例子,和你介绍了 Basic Paxos 的活锁问题,两个提案节点互不相让地提出自己的提案,抢占同一个值的修改权限,导致整个系统在持续性地“反复横跳”,从外部看就像是被锁住了。
同时,我还讲过一个观点,分布式共识的复杂性,主要来源于网络的不可靠、请求的可并发,这两大因素。活锁问题和许多 Basic Paxos 异常场景中所遭遇的麻烦,都可以看作是源于任何一个提案节点都能够完全平等地、与其他节点并发地提出提案而带来的复杂问题。
为此,Lamport 专门设计(“专门设计”的意思是,在 Paxos 的论文中 Lamport 随意提了几句可以这么做)了一种 Paxos 的改进版本“Multi Paxos”算法,希望能够找到一种两全其美的办法:既不破坏 Paxos 中“众节点平等”的原则,又能在提案节点中实现主次之分,限制每个节点都有不受控的提案权利。
这两个目标听起来似乎是矛盾的,但现实世界中的选举,就很符合这种在平等节点中挑选意见领袖的情景。
Multi Paxos
Multi Paxos 对 Basic Paxos 的核心改进是,增加了“选主”的过程:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了分布式共识算法的核心问题和解决方案,为读者提供了全面的技术视角和理解。文章介绍了分布式共识算法中的活锁问题以及Basic Paxos的异常场景,指出其复杂性主要源于网络的不可靠和请求的可并发。为了解决这些问题,Lamport提出了改进版本的Paxos算法——Multi Paxos。Multi Paxos对Basic Paxos的核心改进是增加了“选主”的过程,从而解决了平等提案节点并发带来的复杂问题。此外,文章还介绍了数据复制的过程以及如何保证过程是安全的。最后,文章提出了Raft算法,将共识问题分解为“Leader Election”、“Entity Replication”和“Safety”三个问题来思考、解决,成为了日后重要分布式程序的实现基础。另外,文章还介绍了Gossip协议,作为一种“最终一致性”的分布式共识协议,展示了其在分布式数据库和比特币网络中的应用。文章通过深入讲解分布式共识算法的核心问题和解决方案,为读者提供了全面的技术视角和理解。
该试读文章来自《周志明的软件架构课》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(18)
- 最新
- 精选
- 刘智恒在Multi-Paxos数据复制阶段,如果主应答客户端后,在广播“可以提交”消息之前下线了。用户会收到一个没有被集群提交共识。这样的风险我们应该怎么解决呢?
作者回复: 主节点是收到过半数的签收消息之后才会提交应答客户端的呀。
2021-01-2951 - Jxin哎,每次都花好几个小时才看懂。过后又忘记了。2021-02-10823
- zhanydMulti Paxos 对 Basic Paxos 的核心改进是,增加了“选主”的过程,利用Basic Paxos把分布式中最难的共识部分通过“选主”先解决了。 Basic Paxos是每次并发操作都需要达成共识,用共识算法跑一遍。 Multi Paxos是用共识算法先选个主节点出来,然后就开开心心地把并发操作变成了对主节点的单机操作。2021-01-2920
- simple_孙ES应该是比较典型的raft协议应用,使用过半数选举主分片,并且只有主分片接收写请求,主副分片都支持读请求,如果发生了网络分区则会产生脑裂的现象。 Kafka是使用zookeeper的临时节点实现主broker的选举,并且读写操作都要在主分片上进行,副分片只是备份的作用,可以通过确认等级来设置是否需要同步到所有副分片才算写成功,所以如果采用较低的确认登记表,发生故障转移的时候就会有丢失消息的可能。2021-10-1213
- 唐江paxos对外部系统来说也不是强一致性吧,主节点先响应客户,再广播提案可以提交了,那客户端收到响应后,马上查询非主节点就有可能查到老数据呀2021-08-0511
- 花儿少年课后问题解答: 我们可以看下zookeeper 的官方文档,里面列举了它的应用场景: naming, configuration management, synchronization, and group services 1.命名服务:是指客户端可以获取指定资源的信息,例如RPC的服务地址列表 2.配置管理:类似Apollo的配置管理,配置下发,变更通知等等 3.同步:实现了分布式锁,master选举等功能 4.集群管理:是指对另一个集群的存活监控机制2021-06-161
- 沐风假设一个集群中有3个节点,一个更新操作成功同步给2个节点后(超过半数)返回给客户端,这时有一台节点数据是不一致的,如果同时有一个查询操作请求到了这台节点上,就查到了不一致的数据,算法上怎么保证内部是不一致但外部使用起来又是一致的?2021-06-0121
- 丁小明gossip协议是怎么区分消息的顺序性呢?对于同一个元数据的不同节点发起的变更消息,其他子节点要怎么区分顺序性呢2021-04-1111
- Mong狗才算明白,原来选主只是共识算法的中的一个应用2021-03-261
- 买房只买上海的难度一下子提升了,现在看着很吃力2021-02-201
收起评论