Zookeeper知识梳理

1.Zookeeper工作机制

1.1 工作机制Zookeeper

基于观察者模式的分布式管理框架,它负责存储和管理数据,然后接受观察者的的注册,一旦这些数据发生改变,Zookeeper就负责通知已在Zookeeper上注册的那些观察者做出相应反应

1.2 Zookeeper的特点
  1. Zookeeper:一个领导者(Leader),多个更随着(Follower)组成的集群
  2. Zookeeper集群群只有在半数以上节点存活,才能正常服务
  3. 全局数据一致性:每个Server保存一份相同的副本,Client无论连接那个Server,数据都是一致的
  4. 更新请求顺序进行,来自一个Client的请求按照其发送顺序依次进行
  5. 数据原子性,一次更新要么成功要么失败
  6. 实时性,在一定时间内,Client能读到最新数据
1.2 Zookeeper内部原理
1.2.1 选举机制:
  1. 半数机制:Zookeeper集群半数机器存活,集群可用。所以适合安装奇数台服务器
  2. Zookeeper虽然没有指定Master和Slave,但是Zookeeper工作时,会有一个Leader节点,其他节点为Follower,Leader是通过内部选举机制产生
1.2.2 节点类型:
  1. 持久化目录节点:客户端断开连接后,创建的节点不删除
  2. 持久化顺序编号目录节点:持久化目录节点(Persisent):客户端断开连接后,创建的节点不删除,指示该节点按照名称进行编号
  3. 临时目录节点:客户端与Zookeeper断开连接后,该节点被删除
  4. 临时顺序编号目录节点:客户端与zookeeper断开连接后,开节点被删除,只是Zookeeper对节点名称顺序编号
1.2.2 监听器原理:
  • 监听原理详解
  1. 首先要有一个main()线程
  2. main线程中创建zookeeper 客户端,这时就会创建两个线程,一个负责网络连接通信(connect),另一个负责监听(listen)
  3. 通过connector线程将注册监听事件发送给zookeeper
  4. zookeeper将注册监听时间添加到注册监听列表中
  5. Zookeeper监听到数据或路径发生变化,就会将这个消息发送给listener线程
  6. listener线程调用内部的process()方法
  • 常见监听
  1. 监听节点数据变化:get path[watch]
  2. 监听子节点变化:ls path[watch]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章