分布式系统一致性级别
强一致性
任何时刻任何用户或任何节点都可以读到最近一次成功更新的数据。
实现强一致性的一致性算法
- Two-Phase Commit, 两阶段提交
- Three-Phase Commit,三阶段提交
- Paxos
- Raft
Paxos 是目前最重要、应用最广的算法。
世界上只有一种一致性协议,就是Paxos,
其他协议要么是paxos的简化,要么是错误的
当然,严格地讲,Paxos 和 Raft 应该是共识算法,没有一致性强弱之分
单调读一致性
任何时刻,任何用户一旦读到某个数据在某次更新后的值,这个用户不会再读到比这个值更旧的值。
会话一致性
任何用户在某一次会话内一旦读到某个数据在某次更新后的值,这个用户在这次会话过程中不会再读到比这个值更旧的值。
最终一致性
最终一致性要求一旦更新成功,各个副本上的数据最终将达到完全一致的状态,但达到完全一致状态所需要的时间不能保障。最终一致性适用于要求不高、用于备份的系统。
弱一致性
一旦某个更新成功,用户无法在一个确定时间内读到这次更新的 值,且即使在某个副本上读到了新的值,也不能保证在其他副本上可以读到新的值。弱一致性在实际生产中,是不可用的。