考虑这样一个场景: 多台机器同时执行某一任务,要求某一时刻最多只有一台机器执行, 该怎么搞呢? 可以考虑分布式锁。
思路:在mysql中插入一条记录,表明获取锁。删除一条记录,表明释放锁。 且在mysql表中设置一个unique key字段, 当有一台机器获得锁后, 其他机器无法获取。
有几个问题:
1. 如果一台机器获得锁,在释放锁之前进程挂了, 那么其他机器无法获取到锁。 可以引入锁有效时间的概念,超时后,删除记录,释放锁(必须做到可删除), 同时产生告警。
2. 万一获取锁的操作失败了,就直接做错误处理, 也不太好。 可以引入循环重试的方式来解决,控制重试次数。
实际代码中就是这么搞的, 用起来还比较爽。


![战神引擎传奇手游【黯晶灭世[白猪3.1]】最新整理Win系特色服务端+安卓苹果双端+GM授权后台+详细搭建教程](https://cdn.jxasp.com:9143/image/20251028/0F2E0E55BA6157D5F76B8125D0A511AC.jpg)
















