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

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

内容简介:个人认为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的数据一致性解决方案》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

现代操作系统(第3版)

现代操作系统(第3版)

Andrew S. Tanenbaum / 陈向群、马洪兵 / 机械工业出版社 / 2009-7 / 75.00元

本书是操作系统领域的经典之作,与第2版相比,增加了关于Linux、Windows Vista和Symbian操作系统的详细介绍。书中集中讨论了操作系统的基本原理,包括进程、线程、存储管理、文件系统、输入/输出、死锁等,同时还包含了有关计算机安全、多媒体操作系统、掌上计算机操作系统、微内核、多核处理机上的虚拟机以及操作系统设计等方面的内容。此外,还在第2版的基础上对部分习题进行了增删,更有助于读者学......一起来看看 《现代操作系统(第3版)》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

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

UNIX 时间戳转换

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具