每个子目录项如 NameService 都被称作为znode,也叫节点,和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。 但是每个node的节点数据不能超过1M;
有四种类型的znode(节点类型):
- PERSISTENT-持久化目录节点
客户端与zookeeper断开连接后,该节点依旧存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。
- PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点
这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。
- EPHEMERAL-临时目录节点
和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。
- EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点
客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号 ;利用ZooKeeper实现分布式锁所用的节点类型就是这种临时有序的节点