xxl-job分布式任务调度平台

xxl-job是在定时任务框架quartz(支持分布式任务调度,通过数据库竞争锁来实现)的基础上实现的,但是修改了任务调度的模式,并且任务调度采用注册和RPC调用方式来实现。

技术栈

mysql、ssm、内置netty作为RPC服务调用、quartz

先来聊聊什么是任务调度:

传统实现定时任务的方式:Thread线程、TimeTask一个轻量级定时任务队列框架,用于设置定时任务、ScheduleExecutorService定时周期执行任务、Quartz定时任务框架。

这些方式都在单点系统使用,一旦job服务器宕机之后,就必须采取一些措施:

  • 使用心跳检测监控自动重启、任务补偿机制(任务做标记)
  • 定时任务在执行代码的时候中间突然报错,使用日志记录错误,跳过继续执行,在使用定时Job 扫描日志错误记录,进行补偿信息。
  • 定时Job 在执行的时候,导致整个 Job 异常结束掉,发送邮件通知给运维人员。

分布式定时任务的方式?XXL-Job、Elastic-job等。不过,既然采用分布式,那么肯定会遇到项目部署集群,导致任务重复执行多次;具体操作如下:

1:Zookeeper 实现分布式锁,每次保证拿到锁再执行,效率比较低。
2:配置文件中加入定时任务的开关,但是只能保证一台服务器执行,变为单机服务器。
3:启动的时候使用数据库唯一标识;同样是效率低。
4:分布式调度任务平台,解决了任务幂等问题,Job 负载均衡轮询机制(推荐)。

传统任务调度:

幂等性原因:

集群情况下,两个Tomcat,任务重复执行

传统任务调度的缺点:

  • 没有补偿机制
  • 不支持集群
  • 不支持路由策略
  • 大量数据统计
  • job管理平台
  • 报警邮件通知、状态监控

分布式job调度平台原理:

任何job现在任务调度平台执行,在由任务调度平台路由到实际job服务器。

底层采用quartz

传统的定时任务,几乎无法做到高可用,

再加上项目部署集群,会导致任务幂等性问题;此时分布式定时任务调度平台便发挥了作用,本篇文章咱们拿 XXL-Job 来进行说明;相关作用如下:

1:支持Job集群,Job 负载均衡轮询机制保证幂等性问题
2:支持Job补偿,如果Job执行失败的话,会自动实现重试机制,超过重启次数后,会发送邮件通知运维人员。
3:支持Job日志记录。
4:动态配置定时规则,传统定时Job触发规则都是写死在代码中。
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值