腾讯技术工程分享-如何实现分布式锁以及其安全性问题

问题: 基于 Redis 如何实现一个分布式锁?它足够安全吗 ? 一个严谨的分布式锁模型如何实现,应该考虑什么? 我们经常听到的 Redlock(红锁)有什么问题? 业界争论 Redlock,到底在争论什么?哪种观点是对的 ? 分布式锁到底用 Redis 还是 Zookeeper、Etcd ?

1.为什么需要分布式锁?

  • 单机锁:同一台机器上的不同线程/进程修改同一个资源操作系统提供互斥能力(线程锁、文件锁、信号量)
  • 分布式锁:不同机器上的线程/进程修改同一个资源需借助外部系统(MySQL、Redis、Zookeeper)

2.基于Redis分布式锁怎么实现?

3.Redis分布锁存在的问题

这只是单机Redis状态下的使用,还未考虑集群环境

4.红锁(Redlock)

分布式领域专家 VS Redis作者

5.基于Zookeeper和Etcd的分布锁

6.总结

NPC问题:进程暂停、网络超时、时钟漂移、GC的STW等等