奇葩论文:分布式一致性协议-Paxos

简介: 奇葩论文:分布式一致性协议-Paxos

这是我的第43篇原创

先讲一个小故事。有个超级牛人,叫莱斯利兰伯特,拿过图灵奖。他一直在研究分布式领域。分布式环境中的一致性问题一直难以解决,这哥们写了一篇论文,叫“The Part-Time Parliament”也就是“兼职议会。这个论文中提到了一个Paxos算法,可以解决分布式环境中由于集群中机器随时可能掉线而导致数据不一致问题。但是这位大爷非常的奇葩,把一个算法论文硬生生写成了一个故事--你从论文名字就能看出来--整篇论文中没有一个数学符号。结果可想而知,顶尖的学术期刊压根就不收他的论文。

有兴趣的可以在后台回复:paxos,拜读一下这篇只有11页,没有公式的算法论文。


分布式一致性协议的作用就是让在网络异常的情况下,让所有节点达成共识。无论网络出现什么异常,集群里所有的节点只要通过这个协议之后,就能对某个信息达成一致了。

目前应用比较广的分布式一致性协议有:

  • Paxos
  • ZBA
  • Raft


Paxos协议

Paxos协议需要几个角色来处理相应的任务:

  • 提议者 Proposer
  • 决策者 Acceptor
  • 学习者 Learner

我们在每个节点中都同时设置三个角色。当不同节点的数据/意见不一致的时候,这三个角色将通过以下方达成一致:

  • Prepare提案阶段:提议者向决策者发起提案。
  • Accept决策阶段:决策者接受提案,并告知所有的学习者。


场景假设:现在刘备、关羽、张飞三员大将统领三军,各自收到军师诸葛亮发来的密信,让他们进攻。刘备和关羽收到的是攻打曹操,张飞收到的是攻打周瑜。这可咋整?注意,这时候信息传输是不稳定的,信使可能被杀掉。


Prepare提案阶段

  • Prepare提案阶段:
    提案阶段第一步:所有节点的Proposer提议者所有节点中超过一半的Acceptor决策者发起提案,这个提案的主要内容就是一个编号。
    跟着刘备的孙乾同时向刘关张三个老大发了一封密信,编号是666;糜竺也发了,编号是555,法正的编号是111。
    提案阶段第二所有的Acceptor决策者对手上编号最大的提案进行响应。

    期间,有两个信使挂了,于是刘备收到了孙乾、糜竺和法正的密信,关羽收到了孙乾和法正的,张飞收到了糜竺和法正的。然后各自对手上编号最大的回了一封信:收到了。


Accept决策阶段

  • Accept决策阶段:
    决策阶段第一步:收到一半以上决策者 Acceptor回复的提议者 Proposer,将其提案编号和内容再次发送给一半以上的决策者 Acceptor

    孙乾、糜竺和法正三人里,只有孙乾收到了一版以上的反馈,于是他将自己收到的信息再次发送给刘关张。很不幸,这次只有关羽收到了。
    决策阶段第二步:只有决策者 Acceptor收到了以前回复的最大编号的决策提案,那他就应该接受该提案。同时,他需要告知所有的学习者 Learner


  • 关羽收到了他之前响应过的提案,这是孙乾发来的攻打曹操的信息,他接受了这个提案,并将提案内容告知所有的学习者(士兵)。这时,所有节点就攻打谁的问题达成了一致,开心的去攻打曹操了。


有人说,怎么这么复杂啊?是的,Paxos是出了名的复杂,这已经是超级简化版的了。上面刘关张的例子其实就是“拜占庭将军问题的中国翻译版。

但是这是当时乃至于到现在最广泛的分布式一致性解决方案之一。它解决了一个超级难题:在信息传输异常(机器挂掉、消息延迟、丢失、重复、乱序等各种情况)下,如何使集群中各节点达成统一意见。基于上面的基础逻辑,加上各种限定规则,Paxos能保证无论集群内部发生任何异常,都能让整个分布式系统对于某个信息达成一致性决议。

但是Paxos太费劲了,太难理解了,而且节点多了,就非常麻烦。

相关文章
|
2月前
|
JSON 分布式计算 前端开发
前端的全栈之路Meteor篇(七):轻量的NoSql分布式数据协议同步协议DDP深度剖析
本文深入探讨了DDP(Distributed Data Protocol)协议,这是一种在Meteor框架中广泛使用的发布/订阅协议,支持实时数据同步。文章详细介绍了DDP的主要特点、消息类型、协议流程及其在Meteor中的应用,包括实时数据同步、用户界面响应、分布式计算、多客户端协作和离线支持等。通过学习DDP,开发者可以构建响应迅速、适应性强的现代Web应用。
|
2月前
|
架构师 Java 数据中心
二阶段提交:确保分布式系统中数据一致性的关键协议
【10月更文挑战第16天】在分布式系统中,数据一致性的维护是一个至关重要的挑战。为了应对这一挑战,二阶段提交(Two-Phase Commit,简称2PC)协议应运而生。作为一种经典的分布式事务协议,2PC旨在确保在分布式系统中的所有节点在进行事务提交时保持一致性。
37 0
|
3月前
|
监控
分布式-Zookeeper-Zab协议
分布式-Zookeeper-Zab协议
|
3月前
|
网络协议 网络安全 网络架构
分布式基础-网络通信协议讲解
分布式基础-网络通信协议讲解
分布式基础-网络通信协议讲解
|
4月前
|
存储 算法 Java
(五)漫谈分布式之一致性算法篇:谁说Paxos晦涩难懂?你瞧这不一学就会!
没在时代发展的洪流中泯然于众的道理很简单,是因为它们并不仅是空中楼阁般的高大上理论,而是有着完整落地的思想,它们已然成为构建分布式系统不可或缺的底层基石,而本文则来好好聊聊分布式与一致性思想的落地者:Paxos与Raft协议(算法)。
107 6
|
4月前
|
自动驾驶 5G 调度
|
5月前
|
算法 数据库 OceanBase
共识协议的技术变迁问题之Raft协议对分布式系统有什么贡献
共识协议的技术变迁问题之Raft协议对分布式系统有什么贡献
62 8
|
5月前
|
存储 人工智能 前端开发
共识协议的技术变迁问题之分布式系统的基础目标是什么
共识协议的技术变迁问题之分布式系统的基础目标是什么
|
5月前
|
算法
分布式篇问题之避免陷入死循环,保证Paxos算法的活性问题如何解决
分布式篇问题之避免陷入死循环,保证Paxos算法的活性问题如何解决
|
6月前
|
分布式计算 资源调度 网络协议
分布式系统详解--框架(Hadoop--RPC协议)
分布式系统详解--框架(Hadoop--RPC协议)
48 0