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链接断开,节点就消失,也就释放了锁。
|