分布式模型
- 异步模型
- 同步模型
- 半同步模型:同步异步间切换有限次,最终同步一致
一致性算法
- 同步模型
n个进程,划分为n个回合
第一回合:每个进程把自己的提议广播给所有进程,并与自己已知的提议合并,收到所有提议后回合结束
第n回合:每个进程根据相同规则选择决议值
- 简单的异步模型
提议者广播自己的提议 proposal(v)
提议者收到 proposal(v),如果还没有接受任何决议值,则接受该提议并返回 accept(v)
提议者收到超半数的 accept(v)后,即可决议出v,并广播 decide(v)
关键:每个提议者只能 accept 一次, 需要超半数的提议者 accept 同一个值
定理
FLP Impossibility:对于一个异步系统,只要存在一个可能故障的进程,分布式一致性算法就无法实现
依据:在异步系统中,无法区分进程故障和消息延迟两种情况,因此在最坏的情况下会因为无限等待故障进程的消息相应而导致算法失败