Zookeeper实现分布式锁原理

Zookeeper实现分布式锁原理

原理:基于Zookeeper的临时节点和Watcher机制实现分布式锁,包括其实现流程与底层的执行原理。

Zookeeper是一款开源的分布式服务协调中间件,初衷是开发一个通用的无单点问题的分布式协调框架,采用统一的协调管理方式更好的管理各个子系统,从而让开发者将更多精力集中在业务逻辑上,最终使整个分布式系统看上去像一个大型的动物园。

Zookeeper是一种典型的分布式数据一致性的解决方案,可以实现如数据发布/订阅,负载均衡,命名服务,分布式协调/通知,集群管理,分布式锁和分布式队列等功能。

在这里插入图片描述

ZooKeeper简介与作用
统一配置管理

统一命名服务

集群状态

分布式锁

ZooKeeper的简介与作用
在这里插入图片描述
类比动物园景区
在这里插入图片描述
ZooKeeper在实现分布式锁有节点和监听器
在这里插入图片描述
ZooKeeper节点的数据结构与Watcher监听机制

节点:组成集群的每一台机器

第一种:指构成集成的机器,称为机器节点

第二种:数据模型的数据单元,称之为数据节点ZooKeeper的节点指的是ZNode。

持久节点:一旦被ZNode创建了,除非主动移动,否则一直保存在ZooKeeper上

PERSISTENT:持久化的节点,即使客户端与zk断开连接,节点已然存在

PERSISTENT_SEQUENTIAL:持久化顺序编号节点,比PERSISTENT节点多节点自动按照顺序编号。

Watcher监听器:由于ZooKeeper允许用户在指定的节点ZNode上注册“监听”事件,因而当该节点触发一些特定事件时,ZooKeeper服务端即Server会将事件通知到感兴趣的客户端Client上,从而让客户端做出相应的措施。

Curator框架实现分布式锁
A和B同时争夺一个锁,如果A先行一步获得锁,就会创建一个序号00的节点,那么当B在创建01的节点进行比对由于00更大,那么锁并没有被释放掉,此时B无法拿到锁。

B拿不到锁但是会对前一个节点加上监听器,只要前一个节点被删除了,就释放了锁,马上重新执行获取锁的操作。

由于Curator使用临时顺序节点实现分布式锁,只要客户端与zk链接断开,节点就消失,也就释放了锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值