`

ZooKeeper 节点类型

zk 
阅读更多

ZooKeeper 节点是有生命周期的,这取决于节点的类型。在 ZooKeeper 中,节点类型可以分为持久节点(PERSISTENT )、临时节点(EPHEMERAL),以及时序节点(SEQUENTIAL ),具体在节点创建过程中,一般是组合使用,可以生成以下 4 种节点类型。

1、持久节点(PERSISTENT)


所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。


 2、持久顺序节点(PERSISTENT_SEQUENTIAL)

这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。


3、临时节点(EPHEMERAL)

和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。


4、临时顺序节点(EPHEMERAL_SEQUENTIAL)

 可以用来实现分布式锁

 

客户端调用create()方法创建名为“_locknode_/guid-lock-”的节点,需要注意的是,这里节点的创建类型需要设置为EPHEMERAL_SEQUENTIAL。
客户端调用getChildren(“_locknode_”)方法来获取所有已经创建的子节点,注意,这里不注册任何Watcher。
客户端获取到所有子节点path之后,如果发现自己在步骤1中创建的节点序号最小,那么就认为这个客户端获得了锁。
如果在步骤3中发现自己并非所有子节点中最小的,说明自己还没有获取到锁。此时客户端需要找到比自己小的那个节点,然后对其调用exist()方法,同时注册事件监听。
之后当这个被关注的节点被移除了,客户端会收到相应的通知。这个时候客户端需要再次调用getChildren(“_locknode_”)方法来获取所有已经创建的子节点,确保自己确实是最小的节点了,然后进入步骤3。

分享到:
评论

相关推荐

    zookeeper节点类型和java客户端创建zk节点

    《Zookeeper节点类型与Java客户端创建ZNode详解》 Zookeeper是Apache软件基金会的一个开源项目,它是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是集群的管理者,监视着...

    ZooKeeper 节点类型1

    持久节点是在 ZooKeeper 中创建的最基础的节点类型。一旦创建,除非显式地删除,否则它们将持续存在。即使创建这些节点的客户端会话结束,节点也不会消失。这种特性使得持久节点成为存储不会因会话中断而丢失的重要...

    ZooKeeper节点类型详解:深入理解ZNode的多样性

    ZooKeeper的节点类型提供了灵活的数据存储和处理方式,适用于各种分布式应用场景。通过理解不同节点类型的特点和应用场景,我们可以更好地设计和实现分布式系统。本文通过代码示例展示了如何在Java中操作ZooKeeper的...

    MAC上查看Zookeeper节点工具

    6. **理解Zookeeper节点类型**: 在Zookeeper中,节点分为持久节点(PERSISTENT)、临时节点(EPHEMERAL)和顺序节点(SEQUENTIAL)。ZooInspector可以帮助你直观地识别这些不同类型的节点。 7. **监控Zookeeper...

    zookeeper节点类型详解

    1. **短暂节点(Ephemeral)**:这种类型的节点会在客户端与 Zookeeper 服务器的连接断开后自动删除。这种机制通常用于实现临时锁或者其他需要在客户端崩溃时自动清除的数据。如果客户端由于网络故障或其他原因与...

    zookeeper之节点基本操作(一).doc

    ### ZooKeeper节点基本操作详解 #### 一、创建节点 在ZooKeeper中,节点(也称为znode)是用于存储数据的基本单元。通过`create`命令可以创建节点,并且可以指定不同的节点类型。 1. **普通节点**: - 普通节点...

    ZooKeeper节点属性详解:创建节点时的配置选项

    通过合理设置节点路径、数据内容、节点类型、ACL和版本号,可以创建满足特定需求的节点。这些属性不仅定义了节点的行为,还影响着整个分布式系统的性能和可靠性。通过本文的介绍和代码示例,相信读者已经对ZooKeeper...

    19-Zookeeper知识点1

    Zookeeper 有四种节点类型: 1. 持久:创建之后一直存在,除非有删除操作,创建节点的客户端会话失效也不影响此节点。 2. 持久顺序:跟持久一样,就是父节点在创建下一级子节点的时候,记录每个子节点创建的先后...

    java handler zookeeper for zk's api

    3. **Zookeeper节点类型**:Zookeeper中的节点分为持久节点(PERSISTENT)和临时节点(EPHEMERAL)。持久节点在创建后会一直存在,直到被显式删除;而临时节点在创建它的会话结束时自动删除。 4. **Watcher机制**:...

    基于Zookeeper实现分布式锁实践教程

    Zookeeper节点类型** Zookeeper中有四种类型的节点: - **持久节点(Persistent)**:一旦创建,除非主动删除,否则该节点会一直存在。 - **持久顺序节点(Persistent_Sequential)**:同持久节点,但添加一个...

    zookeeper代码例子

    1. **ZooKeeper节点类型**: - 持久节点(PERSISTENT):一旦创建,除非主动删除,否则会一直存在。 - 临时节点(EPHEMERAL):与客户端会话绑定,会话结束或断开时,该节点会被自动删除。 - 持久顺序节点...

    zookeeper 使用 Curator 示例监听、分布式锁

    1. 创建节点:Curator 提供了 `create()` 方法来创建节点,可以指定节点类型(临时或持久)和数据。 2. 删除节点:使用 `delete()` 方法可以删除指定路径的节点,支持版本匹配和递归删除。 3. 修改节点:`setData...

    zookeeper之节点基本操作.zip

    资源说明中可能包括了更详细的Zookeeper节点操作的实例和最佳实践,例如: 1. 节点权限控制:Zookeeper支持ACL(Access Control List)权限管理,可以对节点设置读、写、执行等权限。 2. 集群状态查看:`stat`命令...

    zookeeper测试程序c++

    这个函数需要指定父路径、节点数据、数据的 ACL(访问控制列表)、节点类型(临时或持久)以及其他参数。例如: ```cpp zhandle_t *zh; // Zookeeper 连接句柄 char *path; int result; char data[] = "example_...

    zookeeper之节点基本操作(一),节点znodes

    #### 二、ZooKeeper 的节点类型 ZooKeeper 提供了多种类型的节点来满足不同的应用场景需求。 ##### 1. 持久节点 (Persistent Nodes) 持久节点是在创建之后会一直存在的节点,除非显式地被删除。这种类型的节点...

    注册管理(zk基本运用)

    3. **Zookeeper节点类型**:在Zookeeper中,节点分为持久节点(Persistent)、持久顺序节点(Persistent Sequential)、临时节点(Ephemeral)和临时顺序节点(Ephemeral Sequential)。在服务注册中,通常使用临时...

    zk第三节-解答1

    2. **Zookeeper节点类型**: - Zookeeper中有四种类型的节点:永久节点(PERSISTENT)、临时节点(EPHEMERAL)、永久有序节点(PERSISTENT_SEQUENTIAL)和临时有序节点(EPHEMERAL_SEQUENTIAL)。 - 在服务注册中...

    深入解析Zookeeper:核心特性与节点类型全景剖析

    2. PERSISTENT_SEQUENTIAL(持久化顺序节点):同样在断开连接后仍然存在,但Zookeeper会为节点名添加一个顺序编号。 3. EPHEMERAL(临时节点):客户端断开连接时,节点会被删除。 4. EPHEMERAL_SEQUENTIAL(临时...

    zookeeper之节点基本操作.docx

    ZNode 分为持久节点和临时节点两种类型。持久节点在客户端断开连接后仍然存在;临时节点则在客户端断开连接后自动删除。 2. **集群(Ensemble)**:ZooKeeper 运行在一组服务器上,这些服务器共同构成一个 ...

Global site tag (gtag.js) - Google Analytics