聊聊Zookeeper的数据一致性解决方案

栏目: 编程工具 · 发布时间: 6年前

内容简介:个人认为Zookeeper就是一个数据库,一个分布式数据库,一个具有文件系统特征的分布式数据库,一个提供监听机制的具有文件系统特质的分布式数据库。如果跟大家聊Zookeeper,那就避不开所以,我们直接开门见山,来直接聊一聊Zookeeper是如何保证数据一致性的。

个人认为Zookeeper就是一个数据库,一个分布式数据库,一个具有文件系统特征的分布式数据库,一个提供监听机制的具有文件系统特质的分布式数据库。

如果跟大家聊Zookeeper,那就避不开 领导者选举CAPZAB协议数据一致性 这些概念。但事实上,这些概念中最核心的是数据一致性,CAP中的C代表的就是强一致性,ZAB协议就是用来保证数据一致性的,而大家熟知的 领导者选举只是ZAB协议中的一个阶段 而已。

所以,我们直接开门见山,来直接聊一聊Zookeeper是如何保证数据一致性的。

关于Zookeeper的数据一致性的场景演示,本文就不演示了,读者可以直接搭一个Zookeeper集群,然后用多个客户端连不通的ZkServer,通过不同的客户端,去操作的不同的ZkServer,你会发现,直接被操作的ZkServer上的数据变化会被同步到集群里的其他ZkServer上,这就是一致性的表现。

那么问题是, Zookeeper的这种数据一致性是怎么实现的呢

其实,我们日常生活中涉及到很多关于数据一致性的场景,比如你和你公司的小伙伴,你们可能是组员,可能是部门同事,假如你们是组员,所以你们会有组长,假设你就是组长,那么很有可能你需要把从客户那里,或产品经理那里获得的信息通过开会的形式告诉给你的组员,比如今天,你决定今天下午3点给组员开会,那么你可能今天上午在你们群里先会通知一下,会发一条信息:“今天下午3点,开会说一下产品经理的新需求,收到请回复”,如果你看到组员都回复了,那么你就可以准备准备下午3点正式开会了,那么这个场景其实就是一个一致性问题,你获得的信息需要同步给其他组员。

好了,我们认真的来想一下这个场景。

  • 首先,我们的目标是:信息同步,信息一致
  • 其次,我们的方法是:先在群里预先通知,然后正式开会
  • 最后,我们的结果是:组内所有的组员都获得了同样的信息

这个场景中有两个角色:

  1. 组长
  2. 组员 所用的方法有两个阶段:
  3. 预先通知(注意,这里组长需要看到组员的回复,但是他并不需要去统计 是不是所有组员都回复了 ,他只需要看到 大部分组员回复了 ,他就认为这个会可以开了)
  4. 正式执行

所以,我们可以想到,对于保证数据的一致性,其实有三个要素

  1. 需要一个领导(组长),所以需要一个领导者选举机制
  2. 需要一个数据同步方法,其实就是2PC(1. 预提交,2. 收到ACK,3. 提交)
  3. 需要一个回复验证机制,过半机制验证

这么一分析下来,不知道大家对于一致性的解决方案有没有自己的理解了,这里没有涉及到Zookeeper的源码分析,存理论分析,大家可以把自己的理解评论出来,一起讨论。

聊聊Zookeeper的数据一致性解决方案

以上所述就是小编给大家介绍的《聊聊Zookeeper的数据一致性解决方案》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

来吧!带你玩转 Excel VBA

来吧!带你玩转 Excel VBA

罗刚君、杨嘉恺 / 电子工业出版社 / 2013-7 / 85.00元

本书旨在普及Excel VBA 基础理论,以及通过VBA 的高级应用扩展Excel 的功能,提升读者的制表效率,解决工作中的疑难,同时亦可借此开发商业插件。 本书主要分为操作自动化引言篇、入门篇、进阶篇和疑难解答篇,覆盖从入门到提高的所有内容,以满足不同层次的读者需求。其中操作自动化引言篇简述了操作自动化的需求与方式,借此引出VBA 入门篇。VBA 入门篇包含第2 章到第13 章,主要介绍了......一起来看看 《来吧!带你玩转 Excel VBA》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换