开发者社区> 问答> 正文

[@talishboy][¥20]zookeeper实现的分布式锁与redis实现的分布式锁之间的区别,如何选取。以及使用中会出现的坑?

zookeeper实现的分布式锁与redis实现的分布式锁之间的区别,如何选取。以及使用中会出现的坑?

问题来自Java技术沙龙的李少伟
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796

展开
收起
管理贝贝 2018-12-01 16:39:57 2742 0
1 条回答
写回答
取消 提交回答
  • 孔祥坤 职位:阿里妈妈应用平台技术专家 擅长问题:分布式应用系统架构、Java核心技术以及开源framework等 经历:10年左右Java应用系统研发及架构设计经验,曾主导和参与多个重要广告应用系统的研发设计,目前在阿里妈妈从事广告投放中台的研发工作。

    zookeeper分布式锁借助于node节点的顺序以及节点监听机制来实现,顺序最小者获得锁,锁释放删除node的事件会被顺序次小者捕捉到,从而获得锁,是一种比较优雅的分布式锁实现方式,zookeeper锁的实现原理也经常用作master/slave集群的选主过程。redis分布式锁基于setnx方法的设值冲突检测来实现的,设值无冲突者自然抢占到锁,设值冲突者就需要轮询抢锁了,抢锁过程中需要耗费一定的计算资源。不管是基于zookeeper实现的分布式锁,还是基于redis实现的分布式锁,都需要注意网络抖动导致的锁无法释放问题,一般的做法都是通过设置timeout时间来避免死锁。

    2019-07-17 23:17:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis在唯品会的应用实践——架构演进与功能定制 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载