XXL-Job原理分析

背景

最近调研调度工具时, 看到了 Github 上的XXL-JOB,已在美团内部、以及其他公司有生产应用。

特点

整体情况: XXL-JOB是基于开源 Quartz 调度内核的、为方便企业调度场景而开源的一款实用的调度工具。自带任务配置页面, 任务监控, 分布式执行器等功能。

  • 支持在页面上下发 Groovy, Shell 等脚本任务; 也可以通过在Executor中内置任务
  • 具备在多个 Executor 中轮转调度的能力(包括简单的任务分片功能)
  • 调度任务是一个整体, 不能编辑一个大任务的流程图, 并跟踪每个节点的执行状态
  • 多个任务之间, 无法配置依赖关系、依次运行(比如上游任务给下游任务发信号)

调度内核

见 xxl-job-admin 配置:


        
                    
                        
            
        
        
  • 内核依赖Quartz, 任务信息注册到mysql中, 在指定的时间点(cron表达式), SchedulerFactoryBean 会根据任务信息指定的 job class 来拉起任务, xxl-job-admin 再把任务分配到executor中运行。
  • xxl-job-admin和job-executor之间, 使用了自定义的rpc协议,该rpc使用hessian 做序列化,在http层传输
  • 分片广播: xxl-job-admin将分片分别发送到job-executor,executor在线程上下文中获取分片索引

你可能感兴趣的:(scheduler)