xxl-job剖析

xxl-job是开源的分布式调度系统,很多公司都已经在生产系统上进行了使用。
github地址:xxl-job

架构和模型

  1. 整体架构
    直接上github中的结构图
    github上的架构图
  2. 部署架构
    分为执行器和调度中心两大组件。
  3. 执行器运行在业务进程中,负责向调度中心进行注册并接受调度中心的调度指令。
  4. 调度中心依赖mysql作为数据源(数据存储和分布式锁),可集群部署,各节点无状态,集群部署时需要部署负载均衡器(如nginx)。一方面向用户提供可视化的控制台服务,另一方面处理执行器的注册请求并向执行器发送指令进行调度。调度中心是无状态的。调度中心和执行器之间的相互交互都是通过HTTP。
部署架构图
  1. 核心模型
    image.png

关键实现细节

  1. 注册过程
    调度执行器向调度中心进行注册,这样调度中心才知道对应组的存活机器有哪些。
    调度中心机器会开启线程定时删除超时的机器记录(xxl_job_registry表)。虽然调度中心的每台机器都会运行这个线程任务,带来的后果也只是多了几次db 调用和浪费点cpu。
    image.png
  2. 调度过程
    image.png

调度中心是无状态的,英文是无状态的,必须使用分布式锁解决。xxl-job是使用的数据库锁。


image.png
  1. 时间轮
    待补充

竞品对比

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