znode类型我们常见的有四种,分别是:
1、PERSISTENT:永久节点,从一开始被创建永久存在直到被主动删除,不会因为client的session断开而被删除。
2、PERSISTENT_SEQUENTIAL:永久有序节点,跟PERSISTENT一样,唯一的区别是节点名会被追加一个单调递增的十进制序号。
3、EPHEMERAL:临时节点,被client创建,client断开连接,节点就被删除。
4、EPHEMERAL_SEQUENTIAL:临时有序节点,被client创建,client断开连接,节点就被删除,节点名会被追加一个单调递增的十进制序号。
除了上面常见的四种类型,在zk的3.5.5及以上版本,有添加了三种类型:
这三种类型分别是:
5、CONTAINER:容器类型,主要用于zk的leader选举和分布式锁等使用场景,其特点是,当容器节点的最后一个子节点被删除,则该节点会变成候选删除节点,在将来的某个时刻被zk服务删除(至于什么时候删除,还没研究)。
6、PERSISTENT_WITH_TTL:带过期时间的永久节点,特性跟PERSISTENT类似,区别是,一旦在过期时间内节点没有任何修改,并且没有任何子节点,则该节点会被删除。TTL时间单位为毫秒。
在Zookeeper.java create方法注释中有说明TTL的单位。
其中过期时间最长不超过大概34年。
7、PERSISTENT_SEQUENTIAL_WITH_TTL:带有过期时间的永久有序节点。