xxl-job重复执行问题
Posted C18298182575
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xxl-job重复执行问题相关的知识,希望对你有一定的参考价值。
一,xxl-job服务
集群部署(两台)
二,问题描述
有一个job1min执行一次,查询一个中间表数据,循环发生esb,得到结果,更新表。当数据量比较大时,会出现数据重复发送了esb,推测job重复执行了,业务耗时比较长,超过了1min,下一个job时间到了,再次查询,取到了同样的数据,导致重复执行
从结果看,说明重复执行了
1.esb报错日志,重复发送了
2.xxl-job日志,1min一次,17点下发量比较大
三,解决方案-聊天记录
I:
1.关于交接单xxl-job重复执行的问题,刚才跟宇松老师我们会议说了,向您汇报一下。xxl-job集群部署,无法做到串行执行。解决方案可以是修改策略,如下
2. 把轮询改成一致性hash
3.
领导:一致性哈希是什么效果
I:
轮询:连续两次调度会路由到两台xxl-job上,分别开启一个线程执行
一致性hash:某个任务会一直分配到一个xxl-job服务上,可以保证单机串行执行
比如:100个任务,50,50固定分配到某个机器上,可以保证单机串行,任务在队列排队执行
官网描述截图
四,思考
单机部署
xxl说了,默认单机串行,比如job执行时间是每1min执行一次,实际业务执行时间是3min分钟,那么下一个时间点到了,会进入队列排队执行,如上关于单机串行的描述
集群部署
还是上面的场景,上一个任务未执行万,下一个时间点到了,会路由到另外一台机器上继续执行,为什么,因为xxl采用并行调度机制,这一点可参考官网描述
并行调度
XXL-JOB调度模块默认采用并行机制,在多线程调度的情况下,调度模块被阻塞的几率很低,大大提高了调度系统的承载量。
XXL-JOB的不同任务之间并行调度、并行执行。
XXL-JOB的单个任务,针对多个执行器是并行运行的,针对单个执行器是串行执行的。同时支持任务终止
xxl-job官网
五.方案对比
1.延迟执行间隔,改成5min,周期大于业务时间执行时间,可行。路由策略还是轮询
2.路由策略改成 一致性hash
以上是关于xxl-job重复执行问题的主要内容,如果未能解决你的问题,请参考以下文章