---------------------------------------------
ZooKeeper 高性能分布式协调中间件
ZooKeeper 树中每个节点 Znode, Znode 维护了一个 stat 状态信息,包含数据变化的时间和版本,每个
Znode 可以设置一个 value 值
---------------------------------------------
Znode 节点类型
持久化节点 节点数据持久化到磁盘
临时节点 节点的生命周期同创建它的客户端生命周期,当客户端会话结束该客户端创建的临时节点就自动删除
有序节点 节点后面有一个递增的序列
容器节点 当容器节点下的最后一个子节点被删除时,容器节点就被自动删除
TTL节点 持久化节点设置一个过期时间,存活时间内该节点没有被修改且没有任何子节点就会被删除
---------------------------------------------
Znode Watcher 机制
Znode 的订阅/通知机制,当 Znode 节点状态发生变化或 ZooKeeper 客户端连接状态发生变化时,会触发事件通知
getData() 用于获取指定节点的 value 信息,并且可以注册监听,当监听节点创建/修改/删除时,会触发对应的事件通知
getChildren() 用于获取指定节点的所有子节点,并且可以注册监听,当监听节点创建/修改/删除时,会触发对应的事件通知
exists() 用于判断指定节点是否存在,并且可以注册监听,当监听节点创建/修改/删除时,会触发对应的事件通知
Watcher 事件的触发都是一次性的,客户端 getData('/node', true) 注册监听,只会收到一次修改通知,客户端可以
在事件回调中再次注册
---------------------------------------------
ZooKeeper 应用场景
服务注册与发现
分布式锁
临时节点,同级节点唯一性
Master 选举
临时有序节点,序号最小的为 Master
---------------------------------------------