mysql分布式锁的坑—— 墨菲定律:有可能出错的事情,终将出错

  • Post author:
  • Post category:mysql


用mysql唯一key做分布式锁, 虽然简单, 但坑太多, 来看看:

1.  在高并发场景下, 用mysql做分布式锁, 简直是想找死。

这种问题, 不要选mysql分布式锁, 别作死。

2.  业务准备释放锁的时候, 进程被正常重启了, 或者异常崩溃了,或者掉电了, 锁永远无法释放。 这个坑, 踩过。 四个人, 通宵修数据, 呵呵哒。   墨菲定律告诉我们:有可能出错的事情,终将出错。

这种问题,也并不是毫无办法的,有办法。

3.  业务释放锁时, 如果操作mysql超时(原因多多, 比如网络原因, 比如mysql挂了), 锁释放失败, 便永远无法释放了。 这个坑, 遇到过。

这种问题,也并不是毫无办法的,有办法。

4.  当两个接口中都有加锁的代码时, 如果他们之间有调用关系, 那就呵呵哒了,直接死锁。 这个坑,遇到过。

这种问题, 实际上就是要解决非重入锁的问题, 想办法搞成可重入的锁吧。

缺点多多, 有办法完善, 但慎用。