Zookeeper如何实现分布式锁

上一篇 << 下一篇 >>>CAP理论和Base理论


核心思路

节点保证唯一、事件通知、临时节点(生命周期和Session会关联)

创建锁原理

1.多个jvm同时在Zookeeper上创建相同的临时节点(lockPath)
2.因为临时节点路径保证唯一的性,只要谁能够创建成功谁就能够获取锁,就可以开始执行业务逻辑;
3.如果节点已经给其他请求创建的话或者是创建节点失败,当前的请求实现等待;

释放锁原理

1.因为我们采用临时节点,当前节点创建成功,表示获取锁成功;正常执行完业务逻辑调用close关闭连接方法,当前的节点会删除;----释放锁
2.其他正在等待请求,采用事件监听如果当前节点被删除的话,有重新进入到获取锁流程;

分布式锁中代码出现业务逻辑问题,导致一直不释放锁,如何解决?

设置Session连接超时时间,在规定的时间内获取锁后超时,就自动回滚当前数据库业务逻辑。

ZkClient zkClient = new ZkClient("10.211.55.16:2181", 50000);

你可能感兴趣的:(Zookeeper如何实现分布式锁)