文章目录
Zookeeper的数据模型
Zookeeper的数据模型迥异于redis的key-value模型,它使用的是文件系统所常见的层次模型。
Zookeeper的层次模型称作:Data Tree,Data Tree 的每个节点称作Znode。不同于文件系统:
- 每个Znode都能保存数据;
- 每个Znode都能保存1M的数据;
- 每个Znode都可以通过其路径唯一标识;
- 每个Znode都有一个版本(version),版本从0开始计数;
Zookeeper使用层次模型的原因
- 1、文件系统的树形结构便于表达数据之间的层次关系;
- 2、文件系统的树形结构便于为不同的应用分配独立的命名空间;
Zookeeper的节点类型
持久节点(PERSISTENT)
持久节点(PERSISTENT)在创建之后即使出现Zookeeper集群宕机或者client宕机也不会丢失。
创建指令:create /xxx
临时节点(EPHEMERAL)
临时节点(EPHEMERAL)在client宕机或者client在指定timeout时间内没有给ZooKeeper集群发送消息就会丢失。
创建指令:create -e /xxx
持久顺序节点(PERSISTENT_SEQUENTIAL)
持久顺序节点(PERSISTENT_SEQUENTIAL)除了具备持久节点的特点之外,它的名字也具有顺序性。
创建指令:create -s /xxx
临时顺序节点(EPHEMERAL_SEQUENTIAL)
临时顺序节点(EPHEMERAL_SEQUENTIAL)除了具备临时节点的特点之外,它的名字也具有顺序性。
创建指令:create -e -s /xxx
容器节点(CONTAINER)
容器节点是zk3.5.3版本新增的节点类型。当容器节点中没有任何子节点,那么改容器节点会被zk定期删除。它和持久节点的区别是:在zk服务启动后,会有一个单独的线程去扫描所有的容器节点,当发现容器节点的子节点数量为0时,会自动删除改节点。
创建指令:create -c /xxx
TTL节点
TTL节点是带过期时间的节点,默认禁用。如果需要启用,需要在zoo.cfg中添加extendedTypesEnabled=true开启。注意:ttl不能用于临时节点。
创建指令:create -t /xxx