Zookeeper实现分布式锁
2021-05-07 16:56:01 0 举报
Zookeeper实现分布式锁
作者其他创作
大纲/内容
4,判断是否加锁成功
给上一个节点加监听器
步骤1
5,监听上一个节点变化
2,判断是否加锁成功
步骤3
是
_xxx-000001
相关问题:1,锁释放问题:创建锁的时候,客户端会在ZK中创建一个临时节点,一旦客户端获取到锁之后突然挂掉(Session连接断开),那么这个临时节点就会自动删除掉。其他客户端就可以再次获得锁2,非阻塞:Zookeeper可以实现阻塞的锁,客户端可以通过在ZK中创建顺序节点,并且在节点上绑定监听器,一旦节点有变化,Zookeeper会通知客户端,客户端可以检查自己创建的节点是不是当前所有节点中序号最小的3,可重入:客户端在创建节点的时候,把当前客户端的主机信息和线程信息直接写入到节点中,下次想要获取锁的时候和当前最小的节点中的数据比对一下就可以了,可以借用ThreadLocal4,公平问题:客户端在ZK中创建的临时节点是有序的,每次锁被释放时,ZK可以通知最小节点来获取锁,保证了公平5,单点问题:ZK是集群部署的,只要集群中有半数以上的机器存活,就可以对外提供服务
创建的节点是否第一个
客户端A
7,通知客户端B,节点发生变化
临时顺序性节点:顺序节点有zk内部自行维护的一个节点序号
加锁成功
1,尝试加锁创建临时节点
9,加锁成功
3,尝试加锁创建临时节点
锁:my_lock
解锁
执行完业务
否
8,再次尝试加锁
客户端B
6,删除自己创建的临时节点
_xxx-000002
0 条评论
下一页