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

拼搏现实的明天。 2022-05-14 13:35 246阅读 0赞

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

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》

官方文档写的十分详细

70

70 1

发表评论

表情:
评论列表 (有 0 条评论,246人围观)

还没有评论,来说两句吧...

相关阅读

    相关 分布式事务及方案

         本方案设计的是强一致性的分布式事务,所有的事务都是强一致性提交,事务一般建议存储在Redis之中,读取比较快。然后事务采用本地事务自己处理的方式,这样在处理本地事物的