xxl-job一致性

时间:2020-03-16 16:58:01   收藏:0   阅读:251

xxl-job一致性

什么是一致性问题:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行

为了避免多个服务器同时调度任务, 通过mysql悲观锁实现分布式锁(for update语句)

 

具体过程:

(可以参看JobScheduleHelper类代码,关键代码截图如下)

技术分享图片

 

如上图所示

1 setAutoCommit(false)关闭隐式自动提交事务,

2 启动事务select lock for update(显式排他锁) 

 

技术分享图片

 

 

3 读db任务信息 -> 拉任务到内存时间轮 -> 更新db任务信息

4 commit提交事务,同时会释放for update的排他锁(悲观锁)

 

当任务处理完毕后,释放 悲观锁,准备等待下一次循环。

原文:https://www.cnblogs.com/wanghongsen/p/12504490.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!