分布式系统:Zookeeper一致性级别分析( 二 )


单调(Monotonic)读一致性 。如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值 。
单调写一致性 。系统保证来自同一个进程的写操作顺序执行 。要是系统不能保证这种程度的一致性,就非常难以编程了 。
另外一种划分一致性级别的:
一致性是指从系统外部读取系统内部的数据时,在一定约束条件下相同,即数据变动在系统内部各节点应该是同步的 。 根据一致性的强弱程度不同 ,可以将一致性级别分为如下几种:
①强一致性(strong consistency) 。任何时刻,任何用户都能读取到最近一次成功更新的数据 。
②单调一致性(monotonic consistency) 。任何时刻,任何用户一旦读到某个数据在某次更新后的值,那么就不会再读到比这个值更旧的值 。也就是说,获取的数据顺序必是单调递增的 。
③会话一致性(session consistency) 。任何用户在某次会话中,一旦读到某个数据在某次更新后的值,那么在本次会话中就不会再读到比这值更旧的值 。会话一致性是在单调一致性的基础上进一步放松约束,只保证单个用户单个会话内的单调性,在不同用户或同一用户不同会话间则没有保障 。示例case:php的session概念 。

分布式系统:Zookeeper一致性级别分析

文章插图
 
④最终一致性(eventual consistency) 。用户只能读到某次更新后的值,但系统保证数据将最终达到完全一致的状态,只是所需时间不能保障 。
⑤弱一致性(weak consistency) 。用户无法在确定时间内读到最新更新的值 。
2. 共识(Consensus)
共识问题中所有的节点要最终达成共识,由于最终目标是所有节点都要达成一致,所以根本不存在一致性强弱之分 。
例如,Paxos是共识(Consensus)算法而不是强一致性(Consistency)协议 。共识算法没有一致性级别的区分 。
疑惑
关于线性一致性的观点, 


推荐阅读