开发者社区> 问答> 正文

[@小川游鱼][¥20]使用redis如何设计分布式锁?使用zk可以吗?如何实现啊这两种哪个效率更高啊??

使用redis如何设计分布式锁?使用zk可以吗?如何实现啊这两种哪个效率更高啊??

展开
收起
月下丶 2018-12-15 00:03:16 2465 0
2 条回答
写回答
取消 提交回答
  • 公众号「服务端思维」

    Redisson分布式锁,分布式锁,了解一下

    2019-07-17 23:21:53
    赞同 展开评论 打赏
  • 既然是锁,就需要考虑是需要乐观锁还是悲观锁。
    1、redis的实现,2.6.12版本之前可参考:http://jingpin.jikexueyuan.com/article/52334.html。2.6.12版本之后可参考:https://www.cnblogs.com/linjiqin/p/8003838.html。原理基本一样,利用redis的单线程特性及命令的原子性来实现。
    2、zk可以实现,分布式锁是它几大主要应用场景之一。大体思路,可利用zk的临时节点和监听器来实现悲观锁,创建节点成功的线程获取到锁,没创建成功的注册一个父节点下子节点变更的watcher监听器。进一步,如果需要乐观锁,可利用zk的临时有序节点和监听器来实现,如果并发较高,监听方式可由监听父节点下子节点的并更改为:a)若读请求,监听比自己序号小的最后一个写请求节点。b)若写请求,监听比自己序号小的最后一个节点。具体实现代码网上不少,如果想系统学习,可以买本《从Paxos到Zookeeper》看看。
    3、至于哪个效率更高,不好说,两者都是企业级的分布式锁实现方案,工业强度都很高。个人感觉应该从自己公司哪种框架的健壮性以及运维支持更好来考虑。

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

相关电子书

更多
基于社区的分布式 风险感知模型 立即下载
如何利用Redisson分布式化传统Web项目 立即下载
FLASH:大规模分布式图计算引擎及应用 立即下载