xxl-job 代码走读

分布式调度是高可用的关键,因此特别做研究。国内众多公司采用xxl-job,也有采用quartz。

问题及分析

  1. 项目的核心是什么?
    核心是分布式调度,分布式调度里核心是注册&分发
  2. 核心领域对象,辅助领域对象?
    任务 、执行器 、调度中心
  3. 任务执行全流程示例?
    核心功能是注册与执行。
    注册过程:任务代码注入执行器,执行器http注册到调度中心。
    执行过程:调度中心http发送任务给执行器,执行器执行任务。
  4. 怎么手动将任务注入到执行器?

    1. 编写任务类,在任务方法上增加xxlJob注解
    2. 生成执行器类对象
    3. 手动将任务类注入执行器JobBean列表
    4. 通过反射解析的任务类及任务方法的注解,生成jobHander,插入jobHandler字典
    5. 启动
  5. 怎么自动扫描并注入到执行器?
    与手动的区别是,不需要显式的将任务类注入执行器jobBean列表,通过springContext找到所有带有xxlJob注解的类,后面步骤与手动注入相同
  6. 执行器启动过程?
    使用netty搭建了一个http server.
  7. 调度中心怎么触发任务?执行器执行任务?
    执行器通过jobId获得JobThread,及JobThread中jobhandler
    重新构造jobHandle,放入JobThread的队列,等待执行。
  8. 任务完成以后,执行器怎么通知调度中心
  9. 有哪些非功能特性,怎么实现?

你可能感兴趣的:(xxl-job)