分布式一致性算法-paxos介绍

Paxos算法由Lamport提出,用于解决分布式系统中保持一致性的问题。在保证Liveness(提案最终会被接受且能被其他进程学习到)和Safety(避免覆盖已确定的值)的前提下,Paxos通过多数派通信策略确保系统一致性。文章通过逐步分析,揭示了Paxos算法的推导过程和应用场景。
摘要由CSDN通过智能技术生成

概述

Paxos算法是Lamport创造基于消息传递的一致性算法,包括Google的Chubby在内很多系统都应用了Paxos算法,Google Chubby[1]有下面的描述:

all working protocols for asynchronous consensus we have so far encountered have Paxos at their core.

足见该算法在分布式系统中的地位。

 

背景说明

Paxos解决的问题是,在分布式系统中系统间如何就一个不可变变量达成一致,仅此而已!但是在该算法的基础之上我们可以做非常有意义的事情,比如Google Chubby就是对Multi-Paxos算法的工程实现,Multi-Paxos

算法的基础就是Paxos,通俗来说,就是多个轮次的Paxos算法的执行,确定一系列不可能变量的值,如果各个节点初始状态一致,再执行相同的操作序列(即确定的一系列不可变变量的值),那么最终结果必然也是一致的。这是可以应用于系统容错和系统一致性上的。

 

条件约束

在分布式系统一致性领域有一个号称定理的结果 FLP Impossibility[2][3],  在异步通信环境下,没有一个算法可以保证数据一致性。我们能够做的就是尽可能的在Liveness和Safety之前找到一个平衡,这和CAP很相像。

Paxos做了如下保证:

Liveness:

只要存在多数派,并且多数派之间网络是联通的,则:

  1. 肯定会有提议被接受
  2. 被接受的提议肯定可以被其他进程学习到

 

Safety:

    Do not be eval ! 保证不做错的事情

  1. 只有一个值被确定或者批准,不能出现第二个值把第一个值覆盖的情况

也是两个约束条件是Paxos的算法根基。

 

推导过程

举个栗子: 假设,三个进程 Pi、Pj和Pk 想就变量V达成一致。

最直接的想法:

P1:  “进程集合中的任一进程向其他所有进程提议V的值&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值