Redis&ZooKeeper两种分布式锁实现的优劣_Redis

1 面试题

一般实现分布式锁都有哪些方式?使用redis如何设计分布式锁?使用zk来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?

2 考点分析

一般先问问你zk,然后过渡到zk关联的一些问题,比如分布式锁。

可能是全站最完整的Redis分布式锁架构演进

Redis & ZooKeeper分布式锁实现的对比
  • Redis分布式锁,需要自己不断去尝试获取锁,比较消耗性能
  • ZooKeeper分布式锁,获取不到锁,注册个监听器即可,不需要不断主动尝试获取锁,性能开销较小

另外一点就是

  • 如果Redis获取锁的那个客户端挂了,那么只能等待超时时间之后才能释放锁
  • 而对于ZooKeeper,因为创建的是临时znode,只要客户端挂了,znode就没了,此时就自动释放锁

Redis分布式锁大家没发现好麻烦吗?

遍历上锁,计算时间等等

ZooKeeper的分布式锁语义清晰实现简单

所以先不分析太多的东西,就说这两点,个人实践认为ZooKeeper的分布式锁比Redis的分布式锁牢靠、而且模型简单易用