Zookeeper 从入门到精通Zookeeper 原理

Posted 思想累积

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zookeeper 从入门到精通Zookeeper 原理相关的知识,希望对你有一定的参考价值。

1.1 选举机制

  1. 半数机制:集群中半数以上的机器存活,集群可用,所以 Zookeeper 适合安装奇数台服务器,存活服务器要大于挂掉的服务器
  2. Zookeeper 在配置文件中没有指定 Master 和 Slave。但是,Zookeeper 工作时,有一个节点作为 Leader,其它为 Follower,leader 通过内部选举机制临时产生。
  3. 多个服务器同时启动的话,选举 myid 最大的作为 leader
  4. 多个服务器依次启动的话,第一个启动处于 looking 状态,第二个启动之后 编号大,但投票数未超过半数,均处于 looking 状态。第三台服务器启动之后,编号最大所以第三台胜出,成为 leader,其它服务器成为 follower,第四台启动之后虽然编号大,但是第三台服务器已经胜出,所以第四台服务器成为 follower
  5. 如果正常运行的 Zookeeper 集群有机器 down 掉,需要重新选举的话,选举的过程需要加入 数据 id(数据的 version) 服务器 id(myid) 逻辑时钟(每次选举对应一个值,从 0 开始)等。逻辑时钟小的选举结果忽略,重新投票。统一逻辑时钟后,数据 id 大的胜出,数据 id 相同的话,服务器 id 大的胜出

1.2 节点类型

  • 持久(Persistent)
    • 客户端与 Zookeeper 断开连接后,节点仍然存在,持久化顺序编号目录节点
  • 短暂(Ephemeral)
    • 客户端与 Zookeeper 断开连接后,节点被删除

1.3 Stat 结构体

  • czxid
    • 创建节点的事务 id,每次修改 Zookeeper 的状态都会收到一个 zxid 形式的时间戳,事务id 是 Zookeeper 中所有修改总的次序,每个修改都有唯一的 zxid
  • ctime-znode
    • 被创建的毫秒数
  • mzxid-znode
    • 最后更新的事务 zxid
  • mtime-znode
    • 最后修改的毫秒数
  • pZxid-znode
    • 最后更新的子节点 zxid
  • cversion-znode
    • 子节点变化号,znode 子节点修改次数
  • dataversion-znode
    • 数据变化号
  • aclVersion
    • 访问控制列表的变化号
  • ephemeralOwner-
    • 如果是临时节点,这个是 znode 拥有者的 session id。如果不是临时节点为 0
  • dataLength-znode
    • 数据长度
  • numChildren-znode
    • 子节点数量

1.4 监听器原理

  1. 首先有一个 main() 线程
  2. 在 main 线程中创建 Zookeeper 客户端,这个时候会创建两个线程,一个 connect 负责网络连接,一个 listener 负责监听
  3. 通过 listener 将注册的监听事件发送给 Zookeeper
  4. 在 Zookeeper 注册监听列表中将注册的监听事件添加到列表中
  5. Zookeeper 监听到有数据或者路径发生变化,将消息发送给 listener 线程
  6. listener 线程内部调用 process() 方法

1.5 写数据流程

  1. 客户端向 Zookeeper 的 Server 上写数据,发送一个请求
  2. Server 会将接收到的请求转发给 leader,leader 将请求广播给各个 Server,各个 Server 写成功后会通知 leader
  3. 当 leader 收到大多数 Server 数据写成功了,就说明数据写成功了。leader 告诉第一个发送过来请求的 Server 数据写成功了
  4. Server 通知客户端数据写成功后,操作完成

以上是关于Zookeeper 从入门到精通Zookeeper 原理的主要内容,如果未能解决你的问题,请参考以下文章

Zookeeper 从入门到精通Zookeeper 原理

zookeeper从入门到精通视频教程(含网盘下载地址)

从入门到精通的ActiveMQ

《黑马ZooKeeper教程(ZooKeeper框架入门到精通)》

zookeeper入门到精通06——zookeeper客户端API创建节点

zookeeper入门到精通