一,底层数据结构
ZooKeeper维护类似一个文件系统的数据结构:
树结构的文件系统。
每个节点有四部分组成:
- data: Znode存储的数据信息
- ACL:记录Znode的访问权限
- stat:Znode的各种元数据,比如事务ID,版本号。
- child: 当前节点的子节点引用
二,通知机制(Watch)
我们可以把Watch理解成是注册在特定的Znode上的触发器,当这个Znode发生改变,也就是调用create,delete,setData方法的时候,将会触发Znode上注册的对应事件。请求Watch的客户端会接收到异步通知。见下图:
三,服务注册与发现
四:分布式锁
有了zookeeper的一致性文件系统,锁的问题变得容易。锁服务可以分为两类,一个是保持独占,另一个是控制时序。
对于第一类,我们将zookeeper上的一个znode看作是一把锁ÿ