面试官问:ZooKeeper 有几种节点类型?别回答 4 种啦

  发布时间:2026-11-16   作者:玩站小弟   我要评论
外推留痕软件【tg:seogoogle987】。

一、关于 ZK 的节点类型

大家如果刷过 ZK 相关面试题的话,就一定会刷到过 “ZK 有几种节点类型?”,大家通常背书的答案的话是:4 种!但其实 ZK (3.6.2)服务端支持 7 种节点类型,分别是:

持久 持久顺序 临时 临时顺序 容器 持久 TTL 持久顺序 TTL

这 7 种类型之前的文面试章中也有提到过,但是并没有展开讲。这次更新的单篇想要把这 7 种类型的节点,认认真真的讲一遍!Let's GO

二、简单介绍 2.1 持久、临时

持久不用我多说,是用的最多的一种类型,也是默认的节点类型,临时节点相较于持久节点来说,就是它会随着客户端会话结束而被删除,通常可官问以用在一些特定的场景,例如分布式锁释放,健康检查等。

2.2 持久顺序、临时顺序

这两种我放在一起介绍,因为他们相对于上面两种的特性就是 ZK 会自动在这两种节点之后增加一个数字的后缀,而路径 + 数字后缀是能保证唯一的,这数字后缀的应用场景可以实现诸如分布式队列,分布式公:Z平锁等。

2.3 容器

容器节点是 3.5 以后新增的节点类型,只要在调用 create 方法时,指定 CreateMode 为 CONTAINER 即可创建容器的节点类型,容器节点的表现形式和持久节点是一样的,但是区别是 ZK 服务端启动后,会有一个单独的线程去扫描,所有的容器节oo点,当发现容器节点的子节点数量为 0 时,会自动删除该节点,除此之外和持久节点没有区别,官方注释给出的使用场景是 Container nodes are special purpose nodes useful for recipes such as leader, lock, etc. 说Ke可以用在 leader 或者锁的场景中。

2.4 持久 TTL、持久顺序 TTL

关于持久和顺序这两个关键字,不用我再解释了,这两种类型的节点重点是后面的 TTL,TTL 是 time to live 的缩写,指带有存活时间,简单来说就是当该节点下面没有子节点的话,超过了 TTL 指定时间ep后就会被自动删除,特性跟上面的容器节点很像,只是容器节点没有超时时间而已,但是 TTL 启用是需要额外的配置(这个之前也有提过)配置是 zookeeper.extendedTypesEnabled 需要配置成 true,否则的话创建 TTL 时会收到 Unimplemenerted 的报错

三、原理介绍

单纯的持久和临时节点我就不介绍了,之前的系列文章有讲

3.1 顺序关键字

客户端创建一个顺序节点的时候,服务端得知当前节点是顺序节点的时候会自动给路径加上后缀,后缀就是父节点的 cversion,代表创建子节点的个数

if (cr 有eateMode.isSequential()) {    path = path + String.format(Locale.ENGLISH,&nbs几种p;"%010d", parentCVersion); } 

就是这么简单~

3.2 容器、TTL 关键字

这两种其实可以放在一起讲,服务端在启动的时候会额外启动一个定时任务线程,会定期的扫描所有的容器和 TTL 的节点,逐一判断子节点的数量以节点及一些相关配置,来决定是否删除,首先整个逻辑是在 ContainerManager 中,定时任务是由 TimeTask 实现的,相关的配置有

配置项 默认值 说明 znode.container.checkIntervalMs 60000(毫秒) 定时任务检查的间隔 znod类型e.container.maxPerMinute 10000 和上面的参数联合成为最小的检查间隔,每个节点间隔必须差 (60000 / 10000)毫秒(默认 6 毫秒)以上 znode.container.maxNeverUsedIntervalMs 0 如果配置不为 0 的话,当容?别器和 TTL 节点最后一次更新的时间和当前时间戳的差超过这个值的话,也会被删除 四、小结 持久关键字:客户端不主动删除的话,节点数据会一直存在 临时关键字:客户端连接断开后,节点数据会被一起删除 顺序关键字:服务端会自动为该节点加数字后缀 容器:服务端回答会定期扫描这些节点,当该节点下面没有子节点时(或其他条件时)服务端会自动删除节点 TTL:需要额外配置才能启用,基本和容器相同,当超过 TTL 时间节点下面都没有再创建子节点时会被删除,但是当创建子节点会重置该超时时间

 

  • Tag:

相关文章

  • 亚马逊B2B业务潜力不俗:销售额或在5年内超越B2C

    查看最新行情 新浪科技讯 北京时间3月17日中午消息,据报道,亚马逊为企业客户设立的市场正在快速发展,甚至快到足以举办自己的大型会议。 亚马逊本周宣布,该公司B2B市场Amazon Business的
    2026-11-16
  • Facebook新政策:能远程办公的员工即可申请居家办公

    新浪科技讯 北京时间5月20日早间消息,据报道,6月9日,美国社交网络巨头Facebook的掌门人扎克伯格宣布,公司所有的全职员工,只要他所从事的工作可以居家完成,都将允许在家里上班。 这个政策和Fa
    2026-11-16
  • 苹果汽车:更高级还是更接地气?

    来源:创业邦 有关苹果汽车的传言最早出现在2014年底。 从那时起,每一年都会有新的传言出现。 而最新的说法是,韩国公司现代起亚将成为其制造合作伙伴,双方将在2022年或2024年推出原型车,并在20
    2026-11-16
  • 云计算开发:Python3-islower()方法详解

    描述 Python islower() 方法检测字符串是否由小写字母组成。 语法 以下是 islower() 方法语法: str.islower() 返回值 如果字符串中包含至少一个区分大小写的字符,
    2026-11-16
  • 标签: 傲意科技 雷迪克 具身智能 灵巧手

    云梦级11月28日云梦级消息,近日,聚焦具身智能与脑机接口的上海傲意信息科技有限公司(简称:傲意科技)宣布完成亿元B3轮战略融资。这是公司本年度内完成的第三轮过亿元融资,本轮融资由上市公司雷迪克(30
    2026-11-16
  • 新冠疫情是如何改变传统的云安全防护策略

    新冠疫情的持续对云安全产生了巨大的影响,例如,Flexera软件公司在其最近发布的2020年云端安全状态报告中就指出,新冠疫情大流行改变了一部分使用云端用户的使用策略。有一半的云端受访者用户表示,由于
    2026-11-16

最新评论