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(分片广播)
      广播触发对应集群中所有机器执行一次任务,同时系统自动传递分片参数,可根据分片参数开发分片任务
  • 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