0%

zookeeper理论

zookeeper理论

会话机制

  • 一个客户端连接一个会话,由zookeeper分配唯一会话id
  • 客户端以特定的时间间隔发送心跳以保持会话有效,超过会话超时时间未收到客户端的心跳,则判断客户端无效(默认2倍tickTime)
  • 会话中请求时FIFO(先进先出原则)的顺序执行

znode的数据构成

  • 节点数据:存储的基本信息(状态,配置,位置等)
  • 节点元数据:stat命令下的数据
  • 数据大小:限制1M

znode节点类型

  • 持久节点: 直接通过create path value创建
  • 临时节点:create -e path value
  • 持久顺序节点:create -s path value
  • 临时顺序节点:create -es path value

注:

  • session会话失效时,临时节点就会被删除
  • 顺序节点的创建,每个父节点拥有一个计数器,这个计数器是有限制的,2147483647之后将溢出
  • 顺序节点在会话结束后仍存在

Watch监听机制

客户端能在znodes上设置watch,监听znode的变化,包括增删改查,通过stat path,ls2 path get path皆可查看
触发watch事件的条件有4种,create,delete,change,child(子节点事件)

监听步骤

  • 任何session(s1、s2)都可以对自己感兴趣的znode监听

  • 当znode通过s1对节点进行了修改

  • s1、s2都会收到znode的变更事件通知

注意:

  • 仅一次性:watch触发后删除,要持续监听的话需要持续提供设置watch

  • 有序性:客户端先得到watch通知才可以查看变化结果

  • 一个watch对象只会被通知一次,如果一个watch同时注册了多个接口,如果此时删除节点,这个事件对多个接口都有效,但是watch只会被调用一次