更新时间:2023-09-25 来源:黑马程序员 浏览量:

zookeeper是CP架构的集群,采用 zab 一致性协议确保数据的强一致。对zookeeper中的数据进行修改,其内部会自动将所有节点数据进行修改后才提供查询服务,不会出现redis那种异步同步导致数据丢失的问题。
zookeeper 数据是目录树的形式,每个目录称为znode,znode中可存储数据(一般不超过 1M),还可以在其中增加子节点。
zookeeper中的节点有两种,分别为临时节点和永久节点。
(1)永久节点: 客户端与zookeeper断开连接后,该节点依旧存在。
(2)临时节点: 客户端与zookeeper断开连接后,该节点会被删除。临时节点下不能创建子节点。
SEQUENTIAL属性: ZooKeeper允许用户为每个节点添加一个特殊的属性:SEQUENTIAL,一旦节点被标记上这个属性,那么在这个节点被创建的时候,ZooKeeper 会自动在其节点名后面追加上一个整型数字,这个整型数字是一个由父节点维护的自增数字。
依赖于zk节点路径唯一的机制来实现的(利用zk同一目录下不能创建多个相同名称的节点这个特性,来实现分布式锁的功能。对于同一个路径,只能有一个客户端能创建成功,其它的都创建失败)。

节点唯一性:对于同一个路径,只能有一个客户端能创建成功,其它的都创建失败。
创建临时节点:客户端与zookeeper断开连接后,该节点会被删除,不必设置锁超时时间。
基于临时节点的zk锁(请求排队)
基于临时节点实现,会产生惊群效应,性能稍差。

基于临时顺序节点的zk锁(请求排队)


Curator是Netflix公司开源的⼀套zookeeper客户端框架,封装了大部分Zookeeper的功能,例如Leader选举、分布式锁等,减少了技术人员在使用Zookeeper时的底层细节开发工作。
Curator中封装了以下几种锁:
InterProcessMutex:分布式可重入排它锁 InterProcessSemaphoreMutex:分布式不可重入排它锁 InterProcessReadWriteLock:分布式读写锁 InterProcessMultiLock:多重共享锁,将多个锁作为单个实体管理的容器 InterProcessSemaphoreV2:共享信号量
实际开发中,可以直接使用 Curator客户端中的各种官方实现的分布式锁,没必要重复造轮子。
毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03AI智能应用开发课程紧贴企业刚需,全程高效学习,直达中高级软件开发水平
2026-02-28风口正劲!黑马程序员又一AI智能应用开发班毕业当天100%就业!
2026-02-27