使用sorttable节点点击事件失效_ZooKeeper 相关概念以及使用小结

本文介绍了ZooKeeper的基本概念,包括session、数据结构、Znode、更新删除机制以及Watcher事件机制。Znode分为永久节点和临时节点,其中临时节点在Session失效后自动删除,常用于Dubbo服务的自动上下线。此外,ZooKeeper的顺序节点和Watcher机制在分布式锁等场景中有广泛应用。文章还提到了ZooKeeper的Java API操作。
摘要由CSDN通过智能技术生成
5cda734bedc3d2ed6c06d693039eebac.png

Dubbo 通过注册中心在分布式环境中实现服务的注册与发现,而注册中心通常采用 ZooKeeper,研究注册中心相关源码绕不开 ZooKeeper,所以学习了 ZooKeeper 的基本概念以及相关 API 操作。

ZooKeeper 相关概念

session

客户端与服务端采用 TCP 长连接,服务端在为客户端创建 Session 会分配一个唯一 sessionId。在 Session timeout 时间内,客户端可以向服务端发送请求以及接受 watcher 事件通知。

数据结构

Zookeeper 将所有数据存储在内存中,数据模型是一棵树(Znode Tree),由斜杠(/)的进行分割的路径,就是一个Znode,例如/foo/path1。

d0524440e5979024553bd358f90af75c.png

Znode

Znode 将会保存数据内容以及相关属性信息。在 Znode 中使用 Stat 数据结保存相关属性信息。Stat 属性中有三种版本信息,分别为 version:当前节点版本信息,cversion:当前节点子节点版本,aversion 当前节点的 ACL 版本。每次发生改动,版本数值将会单调递增。

更新,删除 Znode 可以传入版本数值,如果版本数值不对,将会导致删除/更新失败,这个特性类似于 CAS 操作。

Znode 有以下几种类型:

  1. 永久节点

一旦创建,将会一直存在,除非手动删除。dubbo 目录节点为永久节点。

  1. 临时节点

临时节点基于客户端 Session,Session 有效期内将会一直存在,Session 失效,节点将会自动删除。

利用这个机制,Dubbo 服务者创建的节点就是临时节点。如果 Dubbo 服务者程序意外宕机,在 Session 超时之后,也能自动删除服务节点,自动下线有问题的服务。

3 顺序节点

创建顺序节点将会自动在名字后追加整形数字,默认长度为 10 位。顺序节点也分为永久与临时。

利用临时顺序节点,我们可以用来实现分布式锁 七张图彻底讲清楚ZooKeeper分布式锁的实现原理【石杉的架构笔记】。

Watcher 机制

客户端可以在指定节点注册监听器(Watcher),在触发特定事件后,ZooKeeper 服务端会将事件通知到客户端。在 Dubbo 中消费者基于 watcher 机制可以动态感知到新的服务者加入。

ZooKeeper 可以在三种请求中设置监听,分别为:

  • getData(),获取节点数据
  • getChildren() 获取子节点
  • exists() 判断节点是否存在

通知事件类型分为,增删改事件,以及子节点变动事件。

需要注意的是,watcher 通知过一次之后将会失效,若想继续监听通知,需要重新注册。

ZooKeeper 原生 API 操作

ZooKeeper 官方提供 Java API 实现,提供相关操作的方法。

创建连接

 ZooKeeper zk=new ZooKeeper("127.0.0.1:2181
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值