基于zookeeper和redis分布式锁理解

最近看了基于zookeeper和redis两种分布式锁的原理以及实现方式:
下文中的锁:你可以理解为一个标识符,表达两种状态,对应值存在已经被锁,如果对应值不存在,可以竞争写入,写入成功获得锁。
相同点:
1、作为锁的标识的第三方组件都是集群:在该功能上,主要为了解决单点问题,实现高可用
2、在原理上根本上来说差异不大:通过网络争用锁,zookeeper通过唯一路径定位该锁,redis通过唯一key来定位锁。为避免死锁都采用锁过期机制

不同点:
1、redis实现会用时间戳作为value来判断锁版本,阻塞其他请求;也是通过这个时间戳来完成锁过期机制的。zookeeper通过uuid+epoch+zxid,zookeeper集群自身维护的一个序列号来标识连接客户端。每一个客户端线程可以拥有锁。过期好像是通过客户端操作,corator是的实现方式如此,zookeeper原生的代码中没有这样的方法。
2、redis就是一个基于网络高可用高并发的缓存,因此相对于zookeeper直接对比没有意义,而且zookeeper的诞生是伴随着paxos算法。因此在分布式一致性采用zookeeper的理由更加充分。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 121,074评论 16 134
  • ZooKeeper 分布式过程协同技术详解 简介 分布式系统 分布式系统是同时跨越多个物理主机, 独立运行的多个软...
    鲁云飞_阅读 1,654评论 0 1
  • http://www.jianshu.com/p/60bad0a4a1af
    joshul阅读 98评论 0 0
  • 再看这部影片之前,我到豆瓣上专门看了一下影评,太多的网友在声讨原著作者唐七公子的抄袭事件,还有不少网友评价杨洋就是...
    涼愿阅读 270评论 0 0
  • 一切开始都伴随着终结 一切欢笑都蕴含着心酸 一切安宁都蛰伏着危机 一切忠诚都意味着背叛 一切悲哀都不悲哀 当希望的...
    风子工作室阅读 58评论 0 0