分布式Job任务调度平台幂等性解决方案【XXL-Job】

传统定时任务调度的缺陷:

1、没有补偿机制如每天晚上2点定时执行一个任务,但期间抛出异常,则只能等到第二天晚上2点才能执行。

2、不支持集群

3、不支持路由策略

4、没有job管理平台【方便查看哪些任务执行成功,哪些任务没执行成功,需要手动补偿】

5、重试多次仍然失败,则发送报警邮箱

分布式集群的情况下,怎么保证定时任务不被重复执行?

比如我有3个tomcat组成的集群,每次项目启动时3个tomcat都会启动定时任务,那么这个定时任务则被执行了3次,这个问题也就转化为了:分布式job怎么解决幂等性问题。

解决方案

使用zookeeper实现分布式锁,保证只有一台服务器执行job 缺点(需要创建临时节点和事件通知不易于扩展)

②使用配置文件开关。如jobstart = true   执行job   /    jobstart = true   不执行job        缺点:发布后,需要重启

数据库唯一约束,同时插入有主键冲突,谁插入成功谁执行      缺点:效率低

以上的做法虽能保证分布式集群下定时任务不被重复执行,但失去了定时任务集群的意义,因为某一时刻只有一台服务器执行定时任务,所以④使用分布式任务调度平台       产品包含:XXLJOB,elastic-job等

 

xxl-job

分布式任务调度平台官方文档

http://www.xuxueli.com/xxl-job/#/?id=《分布式任务调度平台xxl-job》

官方文档写的十分详细

猜你喜欢

转载自blog.csdn.net/itcats_cn/article/details/82533978