分布式系统一致性级别

强一致性

任何时刻任何用户或任何节点都可以读到最近一次成功更新的数据。

实现强一致性的一致性算法

  1. Two-Phase Commit, 两阶段提交
  2. Three-Phase Commit,三阶段提交
  3. Paxos
  4. Raft

Paxos 是目前最重要、应用最广的算法。

世界上只有一种一致性协议,就是Paxos,
其他协议要么是paxos的简化,要么是错误的

当然,严格地讲,Paxos 和 Raft 应该是共识算法,没有一致性强弱之分

单调读一致性

任何时刻,任何用户一旦读到某个数据在某次更新后的值,这个用户不会再读到比这个值更旧的值。

会话一致性

任何用户在某一次会话内一旦读到某个数据在某次更新后的值,这个用户在这次会话过程中不会再读到比这个值更旧的值。

最终一致性

最终一致性要求一旦更新成功,各个副本上的数据最终将达到完全一致的状态,但达到完全一致状态所需要的时间不能保障。最终一致性适用于要求不高、用于备份的系统。

弱一致性

一旦某个更新成功,用户无法在一个确定时间内读到这次更新的 值,且即使在某个副本上读到了新的值,也不能保证在其他副本上可以读到新的值。弱一致性在实际生产中,是不可用的。