1.4.2 ZooKeeper的节点类型
ZooKeeper节点的类型有两个维度,一个维度是否永久,另一个维度是否有序。两个维度组合成的四种类型如下。
1. PERSISTENT持久化节点
持久化节点是指在节点创建后就一直存在,直到删除操作主动清除这个节点。否则不会因为创建该节点的客户端会话失效而消失。
2. PERSISTENT_SEQUENTIAL持久顺序节点
这类节点的基本特性和持久化节点类型是一致的。其额外的特性是,在ZooKeeper中,每个父节点会为其第一级子节点维护一份时序,记录每个子节点创建的先后顺序。在创建节点的过程中,ZooKeeper会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。在创建节点的时候只需要传入节点“/test_”,ZooKeeper会自动给“test_”后面补充数字。
3. EPHEMERAL临时节点
和持久化节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而不是连接断开。另外,在临时节点下面不能创建子节点。这里还要注意的就是在客户端会话失效后,所产生的节点也不会立即消失,也要过一段时间,大概是10秒以内,可以试一下本机操作生成节点,在服务器端用命令来查看当前的节点数目,你会发现客户端已经停止,但是产生的节点还在。
4. EPHEMERAL_SEQUENTIAL临时自动编号节点
此节点属于临时节点,并且带有顺序,客户端会话结束节点就消失。
在Java程序中,可以搭建Maven工程来操作ZooKeeper,下面给出了Maven工程pom文件中的依赖信息。
下面的Java代码示例创建了不同类型的ZooKeeper节点。其中第12行代码连接的是ZooKeeper集群中的一个节点,这里也可以连接ZooKeeper集群。如果要连接ZooKeeper集群,将集群中的节点用逗号分隔。