Zookeeper一致性级别

  • 时间:
  • 浏览:2
  • 来源:幸运快3_快3官方邀请码_幸运快3官方邀请码

一致性级别划分

关于分布式系统一致性级别的划分,许多文章划分为强一致性,顺序一致性以及弱一致性

最终一致性属于弱一致性,最终一致性根据更新数据后各程序访问到数据的时间和方法的不同划分为:

  • 因果一致性、
  • “读己之所写(read-your-writes)”一致性、
  • 会话(Session)一致性、
  • 单调(Monotonic)读一致性、
  • 单调写一致性

另一种生活生活,根据一致性的强弱程度不同,直接划分为强一致性、单调一致性、会话一致性、最终一致性和弱一致性

最终一致性和顺序一致性的区别

最终一致性和顺序一致性的差别非常大。

顺序一致性是更强的一致性模型,最终一致性模型是非常弱的一致性模型。还不能 没办法 说,满足顺序一致性的系统一定满足最终一致性,但满足最终一致性的系统不一定满足顺序一致性。比如,zookeeper是顺序一致性,zookeeper也满足最终一致性;cassandra是最终一致性,但cassandra不满足顺序一致性。

ZK一致性级别分析

博文《线性一致性(Linearizability)是并发控制的基础》中提到【在分布式领域中,我们我们也会说线性一致性,之类Zookeeper是线性一致性的,再比如分布式领域著名的CAP定理中的C,也是指线性一致性。】

作者的意思是他在文章中提到的【Zookeeper是线性一致性的】是为了举例说明线性一致性也会用来描述分布式系统,肯能线性一致性最早在并行计算领域提出。

随便说说,各个领域的线性一致性也有一样的。线性一致性最早在并行计算领域提出,现在在分布式领域、数据库领域也有用,含义是一样的。我们我们还不能 把线性一致性称作为强一致性,肯能原子一致性。准确的来说,Zookeeper肯能非要写请求时,是线性一致性的;肯能从读和写的深层来说是顺序一致性的。

zookeeper是也有线性一致性呢

作者是没办法 解释的:【Zookeeper肯能非要写请求时,是线性一致性的;肯能从读和写的深层来说是顺序一致性的】

Zookeeper保证哪种级别的一致性

正如上边所说,Zookeeper肯能非要写请求时,是线性一致性的;肯能从读和写的深层来说是顺序一致性的。

怎么才能 才能 理解Zookeeper的顺序一致性请参看 https://juejin.im/post/5d5a2aa6f265da03b2153816

ZK的单调一致性分析

根据 Zookeeper 的 ZAB 协议来看,ZK 保证的一致性是单调一致性(任啥刚刚刻,任何用户一旦读到某个数据在某次更新后的值,没办法 就无需再读到比一种生活生活值更旧的值。也要是说,获取的数据顺序必是单调递增的。)

愿因:

  • 假设有2n+另一个server,在同步流程中,leader 向 follower 同步数据,当同步完成的 follower 数量大于 n+1时同步流程现在开始,系统可接受 client 的连接请求。肯能client 连接的无需同步完成的follower,没办法 得到的无需最新数据,但还不能 保证单调性。

  • 假设是 follower 接收的写请求,否则转发给 leader 解决;leader 完成两阶段提交的机制。向所有 server 发起提案,当提案获得超过半数(n+1)的 server 认同后,将对整个集群进行同步,超过半数(n+1)的 server 同步完成后,该写请求完成。肯能 client 连接的无需同步完成 follower,没办法 得到的无需最新数据,但还不能 保证单调性。

用分布式系统的CAP原则来分析Zookeeper

(1)C(一致性): Zookeeper保证了顺序一致性(满足最终一致性),在十几秒还不能 Sync到各个节点

(2)A(可用性): Zookeeper保证了可用性,数据无缘无故可用的(没办法 锁)。否则有一大半的节点所拥有的数据是最新的、实时的。 肯能想保证取得是数据一定是最新的,不能 手工调用Sync()

(3)P(分区容错性): 有两点不能 分析

  • 节点多了会愿因写数据延时变大,肯能更多的节点不能 同步
  • 节点多了Leader选举耗时变长,从而会放大网络的现象, 还不能 通过引入 observer(不参与选举)节点缓解一种生活生活现象.