11.zookeeper创建节点 前言

简介: acxasasvava

前言

插播面试题
服务提供者能实现失效踢出是什么原理(高频题)

实际是依赖于ZK节点分:持久/临时节点,失效踢出就是临时节点到期自动失效的具体表现

zookeeper的有哪些节点,他们有什么区别?讲一下应用场景
直入主题
同上周的zookeeper连接一样,这周我们讲的还是一行代码,如下图

image.svg

图片加载失败


那么我们打上断点开始

image.svg

图片加载失败


image.svg

图片加载失败


下面就要开始创建节点了

image.svg

图片加载失败


image.svg

图片加载失败


image.svg

图片加载失败


image.svg

图片加载失败


现在我们虽然看完源码了,但是还是没法回答面试题?那么下面就要敲黑板划重点了
敲黑板画重点
zookeeper中节点是有生命周期的.具体的生命周期取决于节点的类型.节点主要分为持久节点(Persistent)和临时节点(Ephemeral),但是更详细的话还可以加上时序节点(Sequential),创建节点中往往组合使用,因此也就是4种.
持久节点
持久顺序节点
临时节点
临时顺序节点
其实不要纠结于分为几种,这就和语文的断句一样,你断句的方法不同,断出来的结果也不同.那么我们主要讲讲持久节点和临时节点的区别
持久节点
所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点,也就是说不会因为创建该节点的客户端会话失效而消失
临时节点
临时节点的生命周期和客户端会话绑定,也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉
应用场景
zookeeper常用的应用场景我在上周已经画了思维导图,这里就不重复展示了.就拿分布式协调/通知来举例(这个例子既是在回答第一个面试题,也是在回答第二个面试题).
在分布式系统中,我们常常需要知道某个机器是否可用,传统的开发中,可以通过Ping某个主机来实现,Ping得通说明对方是可用的,相反是不可用的,ZK 中我们让所有的机其都注册一个临时节点,我们判断一个机器是否可用,我们只需要判断这个节点在ZK中是否存在就可以了,不需要直接去连接需要检查的机器,降低系统的复杂度

若有收获,就点个赞吧


相关文章
|
2月前
|
SQL 关系型数据库 数据库
|
2月前
|
Arthas Java 测试技术
|
2月前
|
数据可视化 Java 关系型数据库
|
2月前
|
存储 JSON Dubbo
|
2月前
|
Dubbo JavaScript 前端开发
|
2月前
|
Dubbo Java 应用服务中间件
|
2月前
|
Dubbo Java 应用服务中间件
|
2月前
|
Java 数据库 Nacos
|
2月前
|
Arthas Java 测试技术