上一篇 <<<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基础知识及应用场景
<<<CAP理论和Base理论
<<<Zookeeper选举的策略
<<<为什么Zookeeper集群节点一定要是奇数
<<<Zookeeper在后期新增zk节点时如何提高选举效率问题
<<<Zookeeper如何保证节点一致性问题
<<<Zookeeper的Zab一致性协议原理
<<<Zookeeper实现哨兵选举机制
<<<Zookeeper示例之访问权限控制
<<<Zookeeper示例之服务发现与治理
<<<Zookeeper示例之分布式锁
<<<Zookeeper示例之节点事件监听
<<<Zookeeper示例之集群请求
<<<Linux环境安装Zookeeper
<<<Zookeeper配置文件介绍
<<<Zookeeper常见问题
<<<Eureka与Zookeeper有啥区别?
<<<Zookeeper常用命令