XXL-JOB分布式任务调度平台

概述

      XXL-JOB是一个轻量级分布式任务调度框架,开箱即用。

特性

  • 简单:通过Web页面操作简单易用。
  • 任务实时监控,可查看任务执行日志。
  • 动态:可以动态修改任务状态,暂停或恢复任务,也可以终止进行中的任务。
  • 路由策略:第一个,最后一个,轮询,随机,分片广播,故障转移等。
  • 邮件报警:任务失败时支持邮件报警,可配置多邮件地址群发报警。
  • 运行报表:实时查看任务数量、调度次数、执行器数量。
  • ……

后台界面:

XXL-JOB分布式任务调度平台_第1张图片

任务管理:
XXL-JOB分布式任务调度平台_第2张图片
新建任务:
根据自己的需求选择路由策略。
XXL-JOB分布式任务调度平台_第3张图片
查看日志:
XXL-JOB分布式任务调度平台_第4张图片

架构设计

设计思想:
      将调度行为抽象成“调度中心”公共平台,调度中心负责发起调度请求。
      将任务抽象成分散的jobHandler,交由执行器管理,执行器接收调度请求,执行对应的业务逻辑。
      这样调度和任务解耦,提高系统整体稳定性和扩展性。

系统组成:
调度模块:负责管理调度信息。发调度请求,支持任务新建、更新和删除,支持监控任务调度结果及执行日志。
执行模块:接收调度模块发来的调度请求,执行具体的业务逻辑。开发维护更加简单高效。

架构图:
XXL-JOB分布式任务调度平台_第5张图片

任务路由策略

FIRST(第一个):固定选择第一个机器;
LAST(最后一个):固定选择最后一个机器;
ROUND(轮询):;
RANDOM(随机):随机选择在线的机器;
CONSISTENT_HASH(一致性HASH):每个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上。
LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的机器优先被选举;
LEAST_RECENTLY_USED(最近最久未使用):最久为使用的机器优先被选举;
FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度;
BUSYOVER(忙碌转移):按照顺序依次进行空闲检测,第一个空闲检测成功的机器选定为目标执行器并发起调度;
SHARDING_BROADCAST(分片广播):广播触发对应集群中所有机器执行一次任务,同时传递分片参数;可根据分片参数开发分片任务;

XXL-JOB、Quartz比较

XXL-JOB
      比Quartz好,弥补了Quartz的不足:后台界面化,操作性强,有几种路由策略,可分片广播,可以实时监控日志。

Quartz

  • 没有可视化界面
  • 调用API的方式操作任务,不人性化
  • 需要持久化数据到底层数据库,系统侵入性严重
  • 调度逻辑与任务逻辑耦合在一起,如果任务数量较多时,同时调度任务逻辑较重时,调度系统的性能会大大受限于业务
  • quartz底层以“抢占式”获取DB锁并由抢占成功节点负责运行任务,会导致节点负载悬殊非常大;而XXL-JOB通过执行器实现“协同分配式”运行任务,充分发挥集群优势,负载各节点均衡。

      还有一种做定时任务的Elastic-JOB,它是一种基于Zookeeper、Quartz开发并开源的Java分布式定时任务,解决了Quartz不支持分布式的弊端,支持弹性扩容,通过zookeeper集中管理和监控Job,支持失效转移等,这是Quartz等其他定时任务无法比拟的。

参考链接:
http://www.xuxueli.com/xxl-job/#/?id=%e4%b8%80%e3%80%81%e7%ae%80%e4%bb%8b

你可能感兴趣的:(【架构设计】)