什么是分布式锁

  • 锁能保证多线程环境对同一份资源竞争的数据安全性。
  • 分布式锁是用于保证整个集群内的多线程并发线程安全性的一种手段。

分布式锁必备特征

  • 高性能:不能影响主业务的响应速度
  • 可重入:当前获取锁的线程能够多次获取锁,重入几次就要释放几次
  • 防死锁:如果锁是不可重入的,那很可能会导致死锁;如果锁还没被释放,系统突然宕机了,也会导致死锁,这种情况可以给锁设置过期时间来避免。
  • 互斥性:不允许多个客户端同时执行一段代码

分布式锁应用场景

  • 防止缓存击穿
  • 保证接口幂等性
  • 任务调度
  • 秒杀减库存等类似业务防止超卖的情况

分布式锁的实现方式

MySQL

Redis

Zookeeper

Reference