分布式锁怎么实现?

用Zookeeper实现分布式锁其实就是创建一个临时节点:如果临时节点之前不存在,则临时节点创建成功,则这把锁属于你了。

此时有其他人去创建同名的临时节点,如果已经存在了,说明别人已经占有了这把锁,你就失败了,这时候就对那个临时节点注册一个监听器。当锁被释放的时候会通知你然后尝试去创建。

其实释放锁就是删除临时节点,若删除临时节点,ZK会通知别人这个节点被删除了,相当于锁释放了。然后就会尝试再次创建这个临时节点,若创建成功了,则说明获得了锁。

用临时节点来实现分布式锁:加入创建该节点的客户端挂掉了,则会自动删除该节点,让其它客户端能获取该锁。

 

参考文档:zk分布式的实现。

 

redis  和 zk 分布式锁对比:redis 获取锁失败时会反复的尝试,会造成性能的开销。ZK会注册监听器监听,假如锁释放掉了会通知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值