关键词搜索

源码搜索 ×
×

用mysql实现分布式锁

发布2018-12-01浏览8240次

详情内容

       考虑这样一个场景: 多台机器同时执行某一任务,要求某一时刻最多只有一台机器执行, 该怎么搞呢? 可以考虑分布式锁

       思路:在mysql中插入一条记录,表明获取锁。删除一条记录,表明释放锁。 且在mysql表中设置一个unique key字段, 当有一台机器获得锁后, 其他机器无法获取。

       

 

       有几个问题:

        1.  如果一台机器获得锁,在释放锁之前进程挂了, 那么其他机器无法获取到锁。 可以引入锁有效时间的概念,超时后,删除记录,释放锁(必须做到可删除), 同时产生告警。

        2.  万一获取锁的操作失败了,就直接做错误处理, 也不太好。 可以引入循环重试的方式来解决,控制重试次数。

 

        实际代码中就是这么搞的, 用起来还比较爽。

        

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载