![Kafka进阶](https://wfqqreader-1252317822.image.myqcloud.com/cover/408/43738408/b_43738408.jpg)
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文件中的依赖信息。
![](https://epubservercos.yuewen.com/527ABA/23020654009771406/epubprivate/OEBPS/Images/42653-00-022-1.jpg?sign=1739148226-KPhk7WtqOkJ0TUwvWZx5RtNXqDd9D7jo-0-0de2021c888c21b5f8072d55f7d45edd)
![](https://epubservercos.yuewen.com/527ABA/23020654009771406/epubprivate/OEBPS/Images/42653-00-023-1.jpg?sign=1739148226-LSvj9OJmLqDsRjeDV19HxWFqrNfhKSPm-0-35f0f7a2c1bac07db605180525d07049)
下面的Java代码示例创建了不同类型的ZooKeeper节点。其中第12行代码连接的是ZooKeeper集群中的一个节点,这里也可以连接ZooKeeper集群。如果要连接ZooKeeper集群,将集群中的节点用逗号分隔。
![](https://epubservercos.yuewen.com/527ABA/23020654009771406/epubprivate/OEBPS/Images/42653-00-023-2.jpg?sign=1739148226-R1hKi1V8XOw9yEf8n1oxQoHqoJTWJju5-0-d054c70e0fdbfd6353358de0c2e15752)
![](https://epubservercos.yuewen.com/527ABA/23020654009771406/epubprivate/OEBPS/Images/42653-00-024-1.jpg?sign=1739148226-i0BU2YHh8rULrOOiQOVFaIq4uvIoaAVP-0-8aa4362f57fd524feaf0ef30002682d4)