1 面试题
一般实现分布式锁都有哪些方式?使用redis如何设计分布式锁?使用zk来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?
2 考点分析
一般先问问你zk,然后过渡到zk关联的一些问题,比如分布式锁。
可能是全站最完整的Redis分布式锁架构演进
Redis & ZooKeeper分布式锁实现的对比
- Redis分布式锁,需要自己不断去尝试获取锁,比较消耗性能
- ZooKeeper分布式锁,获取不到锁,注册个监听器即可,不需要不断主动尝试获取锁,性能开销较小
另外一点就是
- 如果Redis获取锁的那个客户端挂了,那么只能等待超时时间之后才能释放锁
- 而对于ZooKeeper,因为创建的是临时znode,只要客户端挂了,znode就没了,此时就自动释放锁
Redis分布式锁大家没发现好麻烦吗?
遍历上锁,计算时间等等
ZooKeeper的分布式锁语义清晰实现简单
所以先不分析太多的东西,就说这两点,个人实践认为ZooKeeper的分布式锁比Redis的分布式锁牢靠、而且模型简单易用