ZooKeeper 特性
- 顺序一致性(Sequential Consistency):保证客户端操作是按顺序发生的。
- 原子性(Atomicity):更新成功或失败,没有部分结果。
- 单个系统映射:无论连接到哪个服务器,客户端都将看到相同的内容。
- 可靠性:数据的变更不会丢失,除非被客户端覆盖修改。
- 及时性:保证系统的客户端当时读取到的数据是最新的。
Watch 监听机制
Watch 重要特性
- 一次性触发:watch 触发后即被删除,要持续监听变化,则需要持续设置watch。
- 有序性:客户端先得到watch通知,后才会看到变化结果。
Watch 注意事项
- watch 是一次性触发器;如果您获得了一个watch事件,并且希望得到关于未来更改的通知,则必须设置另一个watch。
- 因为watch是一次性触发器,并且在获取事件和发送获取watch的新请求之间存在延迟,所以不能可靠地得到节点发生的每个更改。
- 一个watch对象只会被特定的通知触发一次。如果一个watch对象同时注册了exists、getData,当节点被删除时,删除事件对exists、getData都有效,但只会调用watch一次。
ZooKeeper 典型应用场景
- 数据发布订阅(配置中心)
- 命名服务
- Master选举
- 集群管理
- 分布式队列
- 分布式锁