很多人喜欢把 Paxos 说成是一致性协议,但是一致性这个词其实会给大家误导,会把这个一致性和 ACID 的一致性(Consistency)联想在一起,Paxos 的“一致性”实际上是 consensus,中文翻译成“共识”可能会更加准确一点,这个“共识”更强调的是多副本状态的一致性。
本篇面试内容划重点:Paxos、Raft 的主要内容。
Paxos 协议
Paxos 是最基础的分布式共识算法,用于解决分布式系统中多副本一致性问题,它可以说是这一领域的奠基石,后面基本所有的相关算法都是基于它做的改造。
角色说明
- Client 产生议题者:即客户端,发起请求产生议题的角色,实际不参与选举过程。
- Proposer 提议者:Proposer 可以有多个,负责接受 client 的请求,并向 acceptor 发起提议。提交分为两个阶段,具体流程下面有详解。
- Acceptor 决策者:Acceptor 负责接受 Proposer 的议案,但是议案必须获得超过半数(N/2+1)的 Acceptor 确认后才能通过。
- Learner 最终决策学习者:Learner 不参与选举,但是会去获取决策结果,在 Paxos 中,Learner 主要参与相关的状态机同步流程。