xxl-job一致性

xxl-job一致性

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

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

具体过程:

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

如上图所示

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

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

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

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

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

猜你喜欢

转载自www.cnblogs.com/wanghongsen/p/12504490.html