ZooKeeper的整体结构使用层级的命名空间,很像一个文件系统,树上的节点称为znode,znode的路径是它的唯一标识,znode存储应用的数据,客户端通过接口获取和更新znode的数据,也可以监听znode的变化。根据应用场景的不同,存在多种不同类型的znode,包括临时节点、序列节点和容器节点。ZooKeeper不使用服务端时间来保序,提供了多种保序的方式。
znode
每个Znode都维护了一个表示节点状态的数据结构,包括版本号和时间戳,每次znode的数据改变,都会导致版本号增加。版本号用于控制节点的状态更新,每次ZooKeeper的客户端获取数据时,都会得到数据的版本号,当客户端试图更新或删除数据时,它必须提供数据的版本号,如果它提供的版本号和当前的版本号匹配,则操作成功,否则操作失败。
znode的基本属性如下:
zxid
见”Zxid“。
- czxid:该znode被创建时改变的zxid;
- mzxid:该znode最后被修改时改变的zxid;
- pzxid:该znode最后被修改的孩子节点改变的zxid;
时间
见”服务端时间“。
- ctime:该znode被