zk典型应用场景
数据发布/订阅
客户端向服务端注册自己需要关注的节点,一旦该节点数据发生变更,那么服务端就向相应的客户端发送Watcher事件通知,客户端接收到消息通知后,主动到服务端获取最新的数据
负载均衡
DDNS为例
应用域名配置IP地址和端口号
应用从域名节点获取一份IP&端口配置,自行解析。同时注册一个数据变更Watcher监听,及时收到变更通知
命名服务
全局唯一ID生成
创建顺序节点,在API返回值中会返回这个节点的完整名字
分布式协调/通知
集群管理
Master选举
利用zk的强一致性,能保证在分布式高并发情况下节点创建一定保证全局唯一性,即无法重复创建一个已经存在的数据节点。同时有多个客户端请求创建同一节点,最终一定只有一个客户端请求能创建成功
分布式锁
排他:同上
共享:Watcher
分布式队列
FIFO:全写共享锁模型
Barrier:getData()/getChildren()