elastic-job与 xxx-job对比: 分布式定时任务调度系统技术选型
xxx-job:美团点评许雪里:分布式任务调度平台 XXL-JOB
官方文档:官方文档
数据库锁实现Quartz分布式:利用数据库锁实现Quartz分布式调度
触发规则:
现在提供的触发规则主要有 3 种。第一种是 Cron 表达式,每一个任务需要配一个 Cron 表达式。第二种是任务依赖,你可以为每一个任务配置一个子任务,当副任务执行完成之后,可以触发子任务,这样关联的方式进行触发执行。第三种就是事件触发,其实就是类似于 Mq 的场景,代码里面有一个业务逻辑,触发了一个任务执行。
xxl-job 特点
(一)HA/集群
(二)弹性扩容
(三)执行器路由策略
(四)故障转移 & 忙碌转移
(五)分片任务 & 动态分片
(六)阻塞策略 & 失败处理策略
(七)触发规则
(八)任务模式
xxl-job源码结构
1. admin模块
- com.xxl.job.admin.controller 调度中心springMVC接口
- com.xxl.job.admin.core
- conf
- XxlJobAdminConfig 调度中心配置
- XxlJobScheduler
- cron
- CronExpression(Borrowed from quartz v2.3.1)
- model
- XxlJobGroup 执行器集群,appName对应一条业务线
- XxlJobInfo 任务调度信息
- XxlJobLog 任务调度日志
- XxlJobLogGlue 任务调度日志,GLUE 模式
- XxlJobRegistry 任务调度注册记录
- XxlJobUser 任务管理员
- route
- strategy(路由策略实现类目录)
- ExecutorRouter(路由策略抽象类)
- ExecutorRouteStrategyEnum 执行器路由策略
- thread
- JobFailMonitorHelper 失败报警处理器
- JobRegistryMonitorHelper 注册中心
- JobScheduleHelper
- JobTriggerPoolHelper 触发调度线程池
- trigger
- XxlJobTrigger 任务调度触发器
- TriggerTypeEnum 触发类型规则
- dao 调度操作Mybatis接口目录
- service
- impl
- AdminBizImpl 调度中心提供给执行器的API服务
- XxlJobServiceImpl 任务调度service实现类
- XxlJobService 任务调度service接口
- impl
- conf
2. core模块
- com.xxl.job.core
- biz
- impl
- ExecutorBizImpl 执行器API服务
- model
- HandleCallbackParam 处理回调(日志id,日志时间,执行返回结果)
- LogResult 日志结果(起始行,终止行,日志内容,是否结束)
- RegistryParam 注册参数(注册组,注册键,注册值)
- ReturnT 返回结果封装(code代码,msg信息,内容)
- TriggerParam 触发参数(作业id,执行处理器,执行参数,执行阻塞策略,执行超时,日志id,日志时间,,,,广播索引,广播全部)
- AdminBiz 调度中心提供给执行器的API服务
- ExecutorBiz 执行器API服务
- impl
- enums
- ExecutorBlockStrategyEnum 阻塞策略 & 失败处理策略
- RegistryConfig 注册配置,心跳时间,死亡时间,注册类型(执行器、调度中心)
- executor
- impl
- XxlJobSpringExecutor
- XxlJobExecutor 执行器
- impl
- handler
- impl
- GlueJobHandler
- IJobHandler 执行器
- impl
- thread
- ExecutorRegistryThread 执行器注册线程
- JobLogFileCleanThread 日志文件清理线程
- JobThread 作业线程(作业id,作业处理器,触发器队列,触发器日志id集合)
- TriggerCallbackThread 初始化触发回调线程
- biz
3. executor模块
com.xxl.job.executor.service.jobhandler
- HttpJobHandler 跨平台Http任务
- ShardingJobHandler 分片广播任务
- DemoJobHandler 任务Handler示例(Bean模式)