xxl-job任务调度中心

xxl-job

解决多机定时任务如何调度执行的分布式任务调度平台 xxl-job,它有着简单易用,开包即食等特点。

在日常开发中,经常会用定时任务执行某些不紧急又非常重要的事情,例如批量结算,计算当日的订单量,当日的成本收入等。当存在大量定时任务的时候,任务的管理也会成为一个比较头痛的问题。xxl-job,就是一个比较成熟的分布式任务调度平台。

xxl-job的特点:

(1)支持通过Web页面对任务进行CRUD操作,可动态启动/停止任务,操作非常简单

(2)任务分布式执行,任务”执行器”支持集群部署,支持弹性扩容缩容;

(3)丰富的路由策略,包括:第一个、最后一个、轮询、随机、故障转移、忙碌转移等;

(4)完善的调度过期策略、任务超时控制、任务失败重试、任务失败告警等

(5)支持动态分配,分片广播任务以执行器为维度进行分片;并且分片广播任务:执行器集群部署时,任务路由策略选择”分片广播”情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务

(6)有着完善的故障转移、任务进度监控、邮件报警等保护机制,

(7)有着运行报表,和Rolling实时日志方便对正规任务进行实时的数据监控

设计思想:

将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。执行器相当于开发项目。因此,“调度”和“任务”两部分可以相互解耦,提高系统整体稳定性和扩展性;

架构图:

xxl-job任务调度中心_第1张图片

工作原理:

xxl-job任务调度中心_第2张图片

执行流程:

a、执行器根据配置的调度中心的地址,自动注册到调度中心

b、达到任务触发条件,调度中心下发任务

c、执行器基于线程池执行任务,并把执行结果放入内存队列中、把执行日志写入日志文件中

d、执行器的回调线程消费内存队列中的执行结果,主动上报给调度中心

e、当用户在调度中心查看任务日志,调度中心请求任务执行器,任务执行器读取任务日志文件并返回日志详情

项目中使用:

源码仓库地址 版本下载
https://github.com/xuxueli/xxl-job 下载
http://gitee.com/xuxueli0323/xxl-job 下载

实现步骤(调度中心+执行器)

调度中心是xxl-job-admin模块,这个模块可以部署到Linux,你的公司的服务器上面。

重点: JobHandler类里面写上你的主要的业务逻辑代码

  1. 写上一个xxxJobHandler类,加上一个@JobHandler(value=“名字”) 注解,这个注解里面的名字和xxl-job-admin管理的任务管理的JobHandler里面的名字是一样的

  2. 继承JobHandler类
    @Override execute()里面写上你的业务逻辑,如果想要操作数据库可以上面@Autowired你的Mapper文件等等

  3. 编辑执行器:配置多个ip地址进行集群操作。

xxl-job任务调度中心_第3张图片
xxl-job任务调度中心_第4张图片

你可能感兴趣的