XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
项目地址:xxl-job分布式任务调度平台
模块
- 调度中心 xxl-job-admin
- 公共依赖 xxl-job-core
- 任务执行器 opay-xxx
集群
- 调度中心集群
- DB配置保持一致
- 登陆账号配置保持一致
- 集群机器时钟保持一致
建议:推荐通过nginx为调度中心集群做负载均衡,分配域名 - 调度中心访问、执行器回调配置、调用API服务等操作均通过该域名进行。
- 执行器集群
- 执行器回调地址保持一致
xxl.job.admin.addresses - 执行器集群内AppName保持一致
xxl.job.executor.appname
- 执行器回调地址保持一致
任务关键点
- 执行器
- 任务描述
- 路由策略
- FIRST(第一个)
固定选择第一个机器 - LAST(最后一个)
固定选择最后一个机器 - ROUND(轮询)
- RANDOM(随机)
随机选择在线的机器 - CONSISTENT_HASH(一致性HASH)
每个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上 - LEAST_FREQUENTLY_USED(最不经常使用)
使用频率最低的机器优先被选举 - LEAST_RECENTLY_USED(最近最久未使用)
最久为使用的机器优先被选举 - FAILOVER(故障转移)
按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度 - BUSYOVER(忙碌转移)
按照顺序依次进行空闲检测,第一个空闲检测成功的机器选定为目标执行器并发起调度 - SHARDING_BROADCAST(分片广播)
广播触发对应集群中所有机器执行一次任务,同时系统自动传递分片参数,可根据分片参数开发分片任务
- FIRST(第一个)
- Cron表达式
- 运行模式
- BEAN
- GLUE
- JobHandler
任务bean名称@JobHandler
- 运行模式
- 阻塞策略
- 单机串行
进入单机执行器后,进入FIFO队列并以串行方式运行 - 丢弃后续调度
进入单机执行器后,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败 - 覆盖之前调度
进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列
- 单机串行
- 负责人
- 其他
- 子任务ID
- 超时时间
- 重试次数
- 报警邮件
- 任务参数
注意事项
- 日志文件目录需要权限
默认 /data/applogs/xxl-job/jobhandler - 设置日志保存天数
xxl.job.executor.logretentiondays=-1 //大于3生效 - 执行日志需要通过 “XxlJobLogger.log” 打印执行日志
- admin执行任务时报错 Communications link failure
数据库链接地址加上 &autoReconnect=true&failOverReadOnly=false