分布式一致性算法:由数学证明推导出Paxos

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: # 序 Basic-Paxos是分布式一致性算法的元祖算法之一,现代的分布式一致性算法基本都是Basic-Paxos算法的优化、改进或简化。 由于过于晦涩难懂,Basic-Paxos也是最难理解的算法之一,然而有理由相信,直接从数学证明推导出Basic-Paxos算法是理解它最便捷的方法。 #

Basic-Paxos是分布式一致性算法的元祖算法之一,现代的分布式一致性算法基本都是Basic-Paxos算法的优化、改进或简化。
由于过于晦涩难懂,Basic-Paxos也是最难理解的算法之一,然而有理由相信,直接从数学证明推导出Basic-Paxos算法是理解它最便捷的方法。

单提案表决:单轮投票一致性

定义1

设分布式节点总集合,定义集合 ,且中任意两个成员的交集不为空,则称的法定集(或称多数派)。

定义2

定义为单轮投票的全部要素的集合,为参加投票的法定集合的集合,为本轮投票的编号,为本轮提出的决议

约束α

轮投票中,每个节点只能支持一个提案

约束β

轮投票中,只有被法定集合接受的提案才被确认为本轮决议

断言A

在同时满足约束α和约束β的情况下,一轮投票中不可能同时有两个不同的提案被表决通过

断言A的证明(反证法)

假设法定集合通过了提案,法定集合通过了提案,且,由于任意两个法定集合之间存在交集,那么必定存在节点,且N同时支持提案,这违反了约束α,因此断言A成立。

多提案带来的问题

约束α和约束β定义了单轮投票一致性约束,能够保证单轮投票产生唯一合法决议。但多个不同的提案需要多轮表决来决出唯一合法决议

多提案表决:多轮投票一致性

定义3

定义R的最大通过决议表征在R轮投票之前通过的所有决议中比R轮编号小的编号最大的一轮表决所通过的表决结果,如过它不存在则定义为

约束γ

在任一轮投票中,如果,则设可以任意选定;如果,则设

断言B(弱一致性):

理想状态下(每轮投票按编号顺序产生并按序表决),在同时满足约束α、约束β和约束γ的情况下,则多轮投票后总能保证一致性

断言B的证明(反证法):

在理想状态下(每轮投票按编号顺序产生并按序表决),假设经过轮投票后,存在新的一轮投票,使得
如果,则任意自定义决议,根据约束γ,,这将导出,与假设矛盾。
如果,则,根据约束γ,,这将导出,仍与假设矛盾。

因此断言B得证。

时序导致的问题

多轮投票表决中,即使每轮投票按序产生,也不能保证最终形成决议的顺序与编号顺序一致(现实模型中的网络传输因素或系统设计因素),这将导致断言B导出的弱一致性不成立。

非理想状态下断言B的证伪:

在非理想状态下,假定存在以下表决序列,如果轮投票产生了决议,根据约束γ,
但由于的决议产生于决议发生之前,此时并不存在的表决结果,于是值此时被任意表决。
因此约束γ被破坏,断言B不成立。

多轮投票强一致性

约束δ

如果轮投票之前,存在轮投票,轮投票已经产生了表决结果,且轮投票的编号大于,则轮投票的任何决议都不被接受(轮表决被放弃并无效化)

断言C(强一致性):

在同时满足约束α、约束β、约束γ和约束δ的情况下,多轮投票后总能保持决议一致性。

断言C的证明:

假设在非理想条件下,存在下列乱序表决,根据约束δ,的表决将被无效化,等效于将从表决序列中丢弃,因此原表决序列化简为
于是被转换为理想状态下的多轮投票一致性问题,根据断言B,一致性成立,因此断言C成立。

两阶段原型导出

断言D

在支持多提案表决的一致性框架(强一致性和弱一致性)内,每一轮投票都必须遵循两阶段模型,其目的是:

第一阶段:

获取的值

第二阶段:

得出本轮决议

断言D的证明:

根据约束γ和约束δ,断言D自动成立

Basic-Paxos算法的自然导出

首先定义角色Proposers和Acceptors。Proposers提出提案,提案信息包括提案编号和提议的value(提案的内容);Acceptor收到提案后可以接受(accept)提案,若提案获得多数Acceptors的接受,则称该提案被批准(chosen)。

两阶段协议表决:

Prepare阶段

  • Proposer选择一个提案号n,向大于半数的Acceptor发送Prepare消息;
  • 如果Acceptor还没有承若过不接受编号小于m(m>n)的提案,则承诺不再接受编号小于n的提案,并返回它已经接受的编号小于n的提案中编号最大的提案。

Accept阶段

  • Proposer接受到所有Acceptor对Prepare请求的回应后,提出编号为n值为v的提案。值v是Acceptor接受到的所有编号小于n的提案中编号最大的提案的值。如果没有Acceptor接受过编号小于n的提案,则值v可由Proposer自己决定。提出提案后,向所有的Acceptor发送Accept消息,以期Acceptor接受提案。
  • 如果Acceptor没有向其它的Prepare请求承诺过不再接受编号小于m(m>n)的提案,则接受编号为n的提案。
相关文章
|
消息中间件 存储 缓存
zk基础—1.一致性原理和算法
本文详细介绍了分布式系统的特点、理论及一致性算法。首先分析了分布式系统的五大特点:分布性、对等性、并发性、缺乏全局时钟和故障随时发生。接着探讨了分布式系统理论,包括CAP理论(一致性、可用性、分区容错性)和BASE理论(基本可用、软状态、最终一致性)。文中还深入讲解了两阶段提交(2PC)与三阶段提交(3PC)协议,以及Paxos算法的推导过程和核心思想,强调了其在ZooKeeper中的应用。最后简述了ZAB算法,指出其通过改编的两阶段提交协议确保节点间数据一致性,并在Leader故障时快速恢复服务。这些内容为理解分布式系统的设计与实现提供了全面的基础。
|
9月前
|
数据采集 监控 NoSQL
优化分布式采集的数据同步:一致性、去重与冲突解决的那些坑与招
本文讲述了作者在房地产数据采集项目中遇到的分布式数据同步问题,通过实施一致性、去重和冲突解决的“三板斧”策略,成功解决了数据重复和同步延迟问题,提高了系统稳定性。核心在于时间戳哈希保证一致性,URL归一化和布隆过滤器确保去重,分布式锁解决写入冲突。
480 2
 优化分布式采集的数据同步:一致性、去重与冲突解决的那些坑与招
|
9月前
|
消息中间件 运维 监控
《聊聊分布式》BASE理论 分布式系统可用性与一致性的工程平衡艺术
BASE理论是对CAP定理中可用性与分区容错性的实践延伸,通过“基本可用、软状态、最终一致性”三大核心,解决分布式系统中ACID模型的性能瓶颈。它以业务为导向,在保证系统高可用的同时,合理放宽强一致性要求,并借助补偿机制、消息队列等技术实现数据最终一致,广泛应用于电商、社交、外卖等大规模互联网场景。
|
10月前
|
负载均衡 算法 调度
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
375 11
|
监控 算法 关系型数据库
分布式事务难题终结:Seata+DRDS全局事务一致性架构设计
在分布式系统中,CAP定理限制了可用性、一致性与分区容错的三者兼得,尤其在网络分区时需做出取舍。为应对这一挑战,最终一致性方案成为常见选择。以电商订单系统为例,微服务化后,原本的本地事务演变为跨数据库的分布式事务,暴露出全局锁失效、事务边界模糊及协议差异等问题。本文深入探讨了基于 Seata 与 DRDS 的分布式事务解决方案,涵盖 AT 模式实践、分片策略优化、典型问题处理、性能调优及高级特性实现,结合实际业务场景提供可落地的技术路径与架构设计原则。通过压测验证,该方案在事务延迟、TPS 及失败率等方面均取得显著优化效果。
630 61
|
10月前
|
机器学习/深度学习 传感器 算法
基于不变扩展卡尔曼滤波器RI-EKF的同时定位与地图构建SLAM算法的收敛性和一致性特性研究(Matlab代码实现)
基于不变扩展卡尔曼滤波器RI-EKF的同时定位与地图构建SLAM算法的收敛性和一致性特性研究(Matlab代码实现)
218 2
|
10月前
|
机器学习/深度学习 人工智能 算法
当AI提示词遇见精密算法:TimeGuessr如何用数学魔法打造文化游戏新体验
TimeGuessr融合AI与历史文化,首创时间与空间双维度评分体系,结合分段惩罚、Haversine距离计算与加权算法,辅以连击、速度与完美奖励机制,实现公平且富挑战性的游戏体验。
|
10月前
|
算法 安全 Python
【顶级EI复现】分布式电源选址定容的多目标优化算法(Matlab代码实现)
【顶级EI复现】分布式电源选址定容的多目标优化算法(Matlab代码实现)
261 1
|
10月前
|
传感器 机器学习/深度学习 算法
【无人机编队】基于麻雀算法分布式无人机群自适应航迹规划和碰撞检测研究(Matlab代码实现)
【无人机编队】基于麻雀算法分布式无人机群自适应航迹规划和碰撞检测研究(Matlab代码实现)
217 2
|
10月前
|
并行计算 算法 调度
基于串行并行ADMM算法的主从配电网分布式优化控制研究(Matlab代码实现)
基于串行并行ADMM算法的主从配电网分布式优化控制研究(Matlab代码实现)
622 0

热门文章

最新文章