一旦ZooKeeper集合启动,它将等待客户端连接。客户端将连接到ZooKeeper集合中的一个节点。它可以是leader或follower节点。一旦客户端被连接,节点将向特定客户端分配会话ID并向该客户端发送确认。如果客户端没有收到确认,它将尝试连接ZooKeeper集合中的另一个节点。 一旦连接到节点,客户端将以有规律的间隔向节点发送心跳,以确保连接不会丢失。

  • 如果客户端想要读取特定的znode,它将会向具有znode路径的节点发送读取请求,并且节点通过从其自己的数据库获取来返回所请求的znode。为此,在ZooKeeper集合中读取速度很快。

  • 如果客户端想要将数据存储在ZooKeeper集合中,则会将znode路径和数据发送到服务器。连接的服务器将该请求转发给leader,然后leader将向所有的follower重新发出写入请求。如果只有大部分节点成功响应,而写入请求成功,则成功返回代码将被发送到客户端。 否则,写入请求失败。绝大多数节点被称为 Quorum 

ZooKeeper集合中的节点

让我们分析在ZooKeeper集合中拥有不同数量的节点的效果。

  • 如果我们有单个节点,则当该节点故障时,ZooKeeper集合将故障。它有助于“单点故障",不建议在生产环境中使用。

  • 如果我们有两个节点而一个节点故障,我们没有占多数,因为两个中的一个不是多数。

  • 如果我们有三个节点而一个节点故障,那么我们有大多数,因此,这是最低要求。ZooKeeper集合在实际生产环境中必须至少有三个节点。

  • 如果我们有四个节点而两个节点故障,它将再次故障。类似于有三个节点,额外节点不用于任何目的,因此,最好添加奇数的节点,例如3,5,7。

我们知道写入过程比ZooKeeper集合中的读取过程要贵,因为所有节点都需要在数据库中写入相同的数据。因此,对于平衡的环境拥有较少数量(例如3,5,7)的节点比拥有大量的节点要好。

下图描述了ZooKeeper工作流,后面的表说明了它的不同组件。

组件 描述
写入(write) 写入过程由leader节点处理。leader将写入请求转发到所有znode,并等待znode的回复。如果一半的znode回复,则写入过程完成。
读取(read) 读取由特定连接的znode在内部执行,因此不需要与集群进行交互。
复制数据库(replicated database) 它用于在zookeeper中存储数据。每个znode都有自己的数据库,每个znode在一致性的帮助下每次都有相同的数据。
Leader Leader是负责处理写入请求的Znode。
Follower follower从客户端接收写入请求,并将它们转发到leader znode。
请求处理器(request processor) 只存在于leader节点。它管理来自follower节点的写入请求。
原子广播(atomic broadcasts) 负责广播从leader节点到follower节点的变化。

最新文章

  1. 花几分钟搭建一个自已的GIT服务器
  2. windbg运行
  3. DataTable详解,以及dataview
  4. Eclipse程序员要掌握的常用快捷键
  5. Visual Studio 2012 使用免费的Team Foundation Service(转载)
  6. JS让input按钮不能点击
  7. PHP - PDO 之 mysql 参数绑定
  8. R学习笔记
  9. MD5加密以及验证加密-加盐
  10. Implementing a builder: Zero and Yield
  11. 【JAVA】文件各行打乱
  12. 银联接口C#
  13. 6.简单提取小红书app数据(简单初步试采集与分析)-1
  14. [转]mysql 存储过程中使用多游标
  15. [AWS vs Azure] 云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析
  16. JS控制页面内容
  17. AIOps探索:基于VAE模型的周期性KPI异常检测方法——VAE异常检测
  18. 0117 面向对象OOP有关方法、类、构造方法及权限修饰符的练习
  19. 洛谷 P1967 货车运输(克鲁斯卡尔重构树)
  20. K8S学习心得 == 创建容器influxdb的RC和SVC

热门文章

  1. js cookie库
  2. ps减去图层混合模式
  3. VC++学习之多线程(2)
  4. cpu降频问题
  5. JAVA calling convention
  6. 我对C++的一些疑问
  7. kafka之partition分区及副本replica升级
  8. 【转】python多版本并存,python3安装pip
  9. iosxcode7以后免证书真机测试方法如下
  10. postgres入门介绍