# Paxos算法

> Paxos算法是是一类用于分布式系统中“共识”（consensus）问题的协议，由莱斯利·兰伯特（英语：Leslie Lamport，LaTeX中的“La”）于1990年提出。该算法旨在解决在网络可能延迟、节点可能失败但消息不会被恶意篡改的环境下，如何使多个进程（节点）就某个值达成一致。需要注意的是，Paxos常被误称为“一致性算法”。

- ID: m01469
- 分类: system
- 领域: 系统论

## 定义

一种基于消息传递的、具有高度容错性的共识算法。解决的核心问题是：在一个可能发生通信故障的分布式系统中，如何让多个节点就某个值（如谁是老大）达成一致。脚手架作用：在不可靠中建立可靠。在跨部门协作或松散组织中，不要指望“命令”能瞬间传达给所有人。你需要一个像Paxos一样的“提案-承诺-接受”机制，容忍部分人掉线，仍能达成集体共识。

## 机制

在可能丢消息、节点宕机的异步网络里，要就某值达成共识，不能靠"一声令下"。Paxos 用两阶段：Propose（提案者发编号提案）→ Promise（多数派承诺不再接受更早提案）→ Accept（接受）→ Learn（通知全员）。只要多数派存活，系统总能收敛到同一值，实现"不可靠中建立可靠"。

## 练习

1. Proposer 发带递增编号的提案值。 2. Acceptor 对更高编号承诺（Promise）并回已接受值。 3. Proposer 收多数承诺后发 Accept 请求。 4. Acceptor 接受后，Learner 学习最终共识值。 5. 少数派掉线不影响多数派达成共识。

## 脚手架用法

在不可靠中建立可靠。在跨部门协作或松散组织中，不要指望“命令”能瞬间传达给所有人。你需要一个像Paxos一样的“提案-承诺-接受”机制，容忍部分人掉线，仍能达成集体共识。

[阅读网页](https://thinkingmodels.site/entries/detail/m01469)
