数据模型
ZooKeeper维护着树形层次结构,树中的节点称为znode
znode用于存储数据,并维护一个ACL(访问控制列表)
主要用来实现协调服务,存储数据在1M以内
模型特征
数据访问具有原子性,不支持添加操作
通过路径引用,只能是绝对路径,只有一种表示方法
路径由Unicode字符串组成,java.lang.String类型
znode性质
短暂znode
短暂znode依赖于客户端会话,会话结束后删除短暂znode
znode类型在创建时决定且不可更改,短暂znode不能有任何子节点
主要用于特定时刻的可用分布式资源
顺序znode
父节点维护递增的计数器,命名顺序znode,唯一性,用于实现分布式锁
观察机制watch
znode发生变化时,观察机制通知客户端,观察只能出发一次,需要重新注册
操作
9个服务操作:create/delete/exists/getACL/setACL/getChildren/getData/setData/sync(同步客户端znode视图)
集合操作multi
多个基本操作写成操作单元,同时成功或失败,用于构建全局一致性的数据结构
关于API
Java/C
同步和异步,同步会阻塞,异步是事件驱动编程
观察触发器
写操作触发读操作观察
create/delete/setData->exists/getData/getChildren,ACL不参与观察
ACL
客户端验证:digest/sasl/ip
权限:READ/WRITE/CREATE/DELETE/ADMIN