当前位置: 首页 > news >正文

通过图表和详细流程解释XXL-JOB中任务从创建到执行的完整过程

🏗️ 系统架构概览

首先,让我们通过一个架构图来理解整个系统的组件关系:

执行器集群
调度中心
业务应用1
业务应用2
业务应用3
调度线程池
调度中心后端
用户/管理员
调度中心 Web界面
调度数据库
执行器集群

🔄 任务从0到1的完整执行流程

下面通过一个序列图来展示任务从创建到执行的完整生命周期:

用户/管理员调度中心Admin数据库调度线程触发线程执行器任务处理器第一阶段: 任务配置1. 登录Web界面创建任务2. 保存任务信息(xxl_job_info)存储任务ID、Cron表达式、执行器路由策略等第二阶段: 执行器注册3. 启动时自动注册4. 更新执行器地址(xxl_job_registry)第三阶段: 任务调度5. 扫描未来5秒的任务返回待执行任务列表loop[每秒检查]6. 提交到触发线程池7. 发送HTTP触发请求包含jobId、参数、签名等信息第四阶段: 任务执行8. 验证请求签名9. 查找并执行对应JobHandler10. 执行业务逻辑11. 返回执行结果第五阶段: 结果回调12. 回调通知执行结果13. 更新任务日志状态14. 可选: 发送告警通知用户/管理员调度中心Admin数据库调度线程触发线程执行器任务处理器

📋 详细步骤分解

第一阶段:任务配置(1-2步)

在调度中心Web界面创建任务:

// 数据库表: xxl_job_info
job_id: 1
job_desc: "示例任务"
cron: "0 0 2 * * ?"        // 每天凌晨2点执行
executor_route_strategy: "FIRST"  // 路由策略: 第一个
executor_handler: "demoJobHandler" // 任务处理器

第二阶段:执行器注册(3-4步)

执行器启动时自动注册:

// 执行器配置
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {XxlJobSpringExecutor xxlJobExecutor = new XxlJobSpringExecutor();xxlJobExecutor.setAdminAddresses("http://localhost:8080/xxl-job-admin");xxlJobExecutor.setAppname("xxl-job-executor-sample");xxlJobExecutor.setPort(9999);return xxlJobExecutor;
}

第三阶段:任务调度(5-7步)

调度线程扫描任务:

// JobScheduleHelper 类中的扫描逻辑
public void start() {thread.scheduleAtFixedRate(new Runnable() {@Overridepublic void run() {// 1. 扫描未来5秒内需要执行的任务// 2. 推送到触发线程池}}, 0, 5, TimeUnit.SECONDS);
}

第四阶段:任务执行(8-11步)

执行器接收请求并处理:

// 1. 执行器接收HTTP请求
@RestController
public class JobApiController {@PostMapping("/run")public ReturnT<String> run(@RequestBody TriggerParam triggerParam) {// 验证、查找Handler、执行}
}// 2. 业务任务处理器
@Component
public class DemoJobHandler {@XxlJob("demoJobHandler")public void execute() throws Exception {// 具体的业务逻辑logger.info("XXL-JOB, Hello World.");}
}

第五阶段:结果回调(12-14步)

执行结果处理:

// 执行器回调调度中心
public void callback(List<HandleCallbackParam> callbackParamList) {// 将执行结果回调给调度中心// 调度中心更新 xxl_job_log 表状态
}

🎯 关键设计要点

1. 调度与执行分离

  • 调度中心:负责任务管理、调度决策、结果收集
  • 执行器:负责具体业务逻辑执行

2. 线程池分级

// 快慢线程池设计
fastTriggerPool: 处理正常任务(队列: 2000)
slowTriggerPool: 处理超时任务(队列: 5000

3. 路由策略

  • FIRST:第一个
  • LAST:最后一个
  • ROUND:轮询
  • RANDOM:随机
  • CONSISTENT_HASH:一致性哈希

4. 失败处理

  • 自动重试机制
  • 失败告警(邮件、钉钉等)
  • 死信队列处理

💡 总结

XXL-JOB的任务执行流程体现了清晰的职责分离事件驱动架构:

  1. 配置驱动:通过Web界面配置触发整个流程
  2. 注册发现:执行器自动注册,调度中心动态感知
  3. 时间驱动:Cron表达式驱动调度决策
  4. 异步处理:线程池异步化处理,提高吞吐量
  5. 结果回调:完整的执行结果反馈机制

这种设计保证了系统的高可用、可扩展和易维护性。

http://www.dtcms.com/a/571139.html

相关文章:

  • 现在个人做网站还能盈利南通网络推广
  • 网站后台代码四川同风源建设工程有限公司网站
  • 给公司做网站的费用入什么科目合肥建筑材料市场信息价官网
  • wordpress子目录站点邹城建网站
  • 电子商务网站开发设计报告书服务商标有哪些
  • 网站可以建几个人企业网站规划案例
  • 网站申请要多少钱做一个公司网站一般需要多少钱
  • 海南省住房城乡建设厅网站浏览器的网址是多少
  • 网站信息系统建设江都建设局网站李局
  • 怎么打开域名网站游戏推广吧
  • linux文件系统和软硬连接
  • 网络 网站建设万能进销存软件免费版
  • 网站优化的主要内容服装搭配网站建设策划书
  • 深圳网站建设公司大全搜狗关键词排名查询
  • 江西网站建设成品软件十大免费
  • 电子学会青少年软件编程(C/C++)3级等级考试真题试卷(2025年9月)
  • 电子商务网站有哪些?个人app开发平台免费
  • 培训网站免费安装wordpress步骤
  • 备案 网站名称企业代码查询入口
  • go-mapus整合到engineercms里,插入带地理信息的照片
  • 建设部安全员证书查询网站asp 精品网站制作
  • 律师网站素材海珠一站式网站建设
  • ESD防护设计宝典(二十三):ESD与EOS失效差异分析
  • 龙川做网站的手机欧美视频网站模板下载 迅雷下载 迅雷下载地址
  • Html5做旅游网站的设计思路wordpress is single
  • Java资源持续监控
  • 微网站教程单位网站开发
  • 导航网站没有内页没有了珠海本地网站设计公司
  • 从原型到生产级跃迁:LangChain 1.0 全面解析,解锁智能体开发新范式
  • 二手车网站模版售价wordpress 文章分页 链接