zookeeper实现的分布式锁与redis实现的分布式锁之间的区别,如何选取。以及使用中会出现的坑?
问题来自Java技术沙龙的李少伟
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796
zookeeper分布式锁借助于node节点的顺序以及节点监听机制来实现,顺序最小者获得锁,锁释放删除node的事件会被顺序次小者捕捉到,从而获得锁,是一种比较优雅的分布式锁实现方式,zookeeper锁的实现原理也经常用作master/slave集群的选主过程。redis分布式锁基于setnx方法的设值冲突检测来实现的,设值无冲突者自然抢占到锁,设值冲突者就需要轮询抢锁了,抢锁过程中需要耗费一定的计算资源。不管是基于zookeeper实现的分布式锁,还是基于redis实现的分布式锁,都需要注意网络抖动导致的锁无法释放问题,一般的做法都是通过设置timeout时间来避免死锁。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。