zookeeper快速入门二:zookeeper基本概念
内容提要
这篇文章介绍了Zookeeper的存储结构、znode的定义和作用、znode节点的四种类型、权限控制ACL以及事件监听watcher的功能。
延伸解读
znode数据存储的实用边界
文章建议znode存储数据不超过1M,这源于ZooKeeper作为协调服务的定位。它主要存放状态、配置等元数据,而非海量业务数据。若需存储大对象,应将其放在数据库等外部系统,仅在znode中保存引用。理解这一边界有助于避免误用,防止因数据过大影响集群性能和稳定性。
版本号如何实现乐观锁
ZooKeeper的版本号(dataVersion、cversion、aclVersion)记录节点内容、子节点列表和ACL的修改次数。更新时需携带先前读取的版本号,若与当前版本一致则提交成功,否则失败。这实现了乐观锁,适用于分布式场景中防止并发冲突,例如库存扣减。开发者需注意在更新失败时重试或重新读取数据。
四种节点类型的选择依据
临时节点在客户端会话断开时自动删除,适合表示服务实例的存活状态;持久节点则需显式删除,适合存储配置等长期数据。顺序节点会在名称后附加递增序号,可用于实现分布式队列或锁。选择时需结合业务生命周期:临时节点用于动态成员管理,持久节点用于稳定元数据,顺序节点用于需要唯一有序标识的场景。
ACL与Watcher的注意事项
ACL基于每个znode设置,权限类型包括create、read、delete、write、admin,授权策略有world、auth、digest、ip、x509。digest是业务系统常用方式。Watcher是一次性触发器,节点变化通知后即失效,如需持续监听必须重新注册。这要求客户端在收到通知后主动再次设置监听,否则会错过后续事件。
Q&A
Zookeeper的存储结构是怎样的?
Zookeeper的存储结构类似于树形文件体系,节点称为znode,根节点为'/',每个znode可以保存数据和子节点。
什么是znode,它的作用是什么?
znode是Zookeeper中的节点,主要用于存储状态信息和配置,推荐存储的数据不超过1M。
Zookeeper中有哪些类型的节点?
Zookeeper有四种节点类型:暂时节点、暂时次序节点、耐久节点和耐久次序节点。
Zookeeper如何进行权限控制?
Zookeeper的权限控制基于每个znode,权限类型包括create、read、delete、write、admin,授权策略有world、auth、digest、ip、x509。
Zookeeper的事件监听功能是如何工作的?
Zookeeper支持事件监听watcher,能够监听节点变化并通知客户端,注册的监听仅使用一次,需重新注册以监听后续变化。
Zookeeper中的版本号有什么作用?
Zookeeper中的版本号用于实现乐观锁,确保数据在更新前未被修改,避免并发冲突。