`

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的多样性

    在Java中操作ZooKeeper节点涉及到连接管理、节点创建、读取、更新和删除等操作,通过相应的代码示例,开发者可以学习如何利用ZooKeeper来实现复杂的分布式场景。 ZooKeeper的节点类型设计得既简单又强大,能够满足...

    MAC上查看Zookeeper节点工具

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

    zookeeper节点类型详解

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

    zookeeper之节点基本操作一 zookeeper节点有哪些

    - create:创建一个节点,可以指定节点类型,如持久化、临时或顺序节点。 - delete:删除一个指定的节点。如果节点下有子节点,需要使用特定的命令删除整个树。 - get:获取一个节点的数据内容以及相关的元数据。 - ...

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

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

    ZooKeeper节点信息查看指南:深入探索ZNode详情

    5. 节点类型:节点可以是持久的、临时的、有序的或无序的。 接下来,我们将介绍几种查看ZooKeeper节点信息的方法: 1. 使用ZooKeeper命令行客户端:ZooKeeper命令行界面是查看和管理节点的常用工具,通过输入不同...

    基于Java语言实现的ZooKeeperClient设计源码,用于监控ZooKeeper节点情况

    因此,基于Java语言实现的ZooKeeper客户端设计源码便应运而生,它专门针对ZooKeeper节点的监控需求,提供了一整套解决方案。 该项目源码由61个文件组成,从文件类型来看,包含了34个HTML文件、11个JAR包、6个Java...

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

    ZooKeeper节点属性的灵活配置选项为分布式系统提供了强大的功能支持,通过合理配置节点属性,可以实现高效的分布式应用协调和数据管理。开发者需要深入理解每个属性的意义和用途,以便在开发中做出合适的选择和应用...

    ZooKeeper节点操作基础指南

    ZooKeeper节点操作基础指南知识点总结: ZooKeeper是分布式系统中广泛使用的服务框架,它在系统的配置管理、分布式锁、集群管理等方面发挥着重要作用。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节点创建全指南:从基础到实践

    ZNode有多种类型,包括持久节点、临时节点、持久顺序节点和临时顺序节点,它们的生命周期和属性各有不同。创建ZNode涉及建立连接、创建节点、设置权限和检查结果等步骤。ZooKeeper支持Java、Python、C#等多种编程...

    ZooKeeper节点管理精要:删除ZNode的操作与实践

    ZNode的类型包括持久节点、临时节点、持久顺序节点和临时顺序节点。持久节点会在创建后一直存在,直到被显式删除;临时节点则与会话生命周期绑定,会话结束时自动删除;持久顺序节点和临时顺序节点在节点名后会附加...

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

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

    zookeeper之节点基本操作.zip

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

    ZooKeeper节点权限设置指南:精细化访问控制的实践

    ZooKeeper的ACL由两部分组成:一是权限,表示允许的操作类型;二是身份标识,定义哪些用户或角色可以执行这些操作。身份标识可以是具体的用户(由用户名和密码组成),也可以是IP地址,或者使用特殊的标识符如`world...

Global site tag (gtag.js) - Google Analytics