一、数据模型
1.ZNode:每个节点在 Zookeeper 中叫 ZNode,并且有唯一的路径标识,是 ZooKeeper 中数据的最小单位,每个 ZNode 上都可以保存数据以及创建子节点,但临时节点不能创建子节点。
2.ZNode 中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本。
节点以树形存储:
ZNode 的节点路径标识方式是由一系列使用斜杠(/)进行分割的路径,开发人员可以向这个节点中写入数据,也可以在节点下面创建子节点。
事务 ID:
对于每个事务请求,Zookeeper 都会为其分配一个全局唯一的事务 ID,用 ZXID 标识,通常是一个 64 位的数字。每一个 ZXID 对应一次更新操作,从这些 ZXID 中可以间接地识别出 Zookeeper 处理这些更新操作请求的全局顺序。
二、节点特性
Zookeeper 中每个数据节点都是有生命周期的,其生命周期的长短取决于数据节点的类型。每个节点都是唯一的,并且创建后就不能再修改了。
三种节点类型:
持久节点:被创建后一直存在 Zookeeper 服务器上,直到有删除操作来主动清除。
临时节点: 临时节点的生命周期与客户端的会话绑定在一起,一旦客户端会话失效,临时节点就会被自动清理掉。
顺序节点:Zookeeper 会自动为给定节点名加上一个数字后缀,作为一个新的、完整的节点名。这个数字后缀的上限是整形的最大值。
四种组合型节点类型:
持久节点、持久顺序节点、临时节点、临时顺序节点
所谓后面加上顺序,就是给持久节点 / 临时节点加上数字后缀。