任务调度是在特定业务场景下调度任务处理。在分布式架构中,分布式调度框架的设计尤为重要。本文简单介绍了Quartz和xxl-job这两种常用的分布式调度框架的特点、基本架构和参数配置,以加深理解。
1。分布式调度框架设计
定时任务与在线业务的实时处理不同,需要在特定的时间处理特定的任务,例如每天在财务核心会计系统中进行定时记账批量处理,在电商系统中的小时 定期回收处理购票系统中的超时订单、定时发送动态账号短信通知等
如果上述业务场景是在单机环境下,您可以通过Timer或者spring定时框架定义定时任务类来对任务进行调度和编排。但在分布式应用架构中,分布式定时任务调度框架需要满足以下基本特征:
-
核心功能:调度、任务管理和可观察日志
-
高可用性:集群和任务分片的高可用性以及故障后处理
-
高性能:分布式锁的实现
-
扩展功能:可视化运维、多语言支持、任务编排
1.1 分布式任务调度框架总体架构
分布式任务调度是分布式集群架构下对定时任务的调度和管理。包含三个关键词:分布式、任务调度、配置监控中心:
-
分布式架构:分布式部署架构中的每个节点都可以无状态、无限水平扩展,支持动态扩缩容和动态任务在线离线
-
任务调度与执行:具体任务请求的分发与接收、任务动态均衡分配、任务执行及任务状态管理(失败或超时重试、断点重试)
-
配置监控中心:感知整个集群的状态并监控,任务信息注册、任务运行日志和任务进度监控
基于此,常见的分布式任务调度框架一般包括以下模块:
调度控制台:负责定时任务的可视化编排和配置、任务进程和状态的动态展示、任务运行的关键日志和错误信息的显示、任务超时控制和失败重试的配置
-
任务接入:将任务从调度控制台转换到调度器,并向注册中心注册任务
-
调度器:接收接入下发的调度任务,将任务拆分下发,在注册中心找到执行器,然后将任务发送给执行器执行,同时也向注册中心注册
-
执行器:接收调度任务并向注册中心上报状态。执行器是一个批量运行的程序,即真正运行作业逻辑的进程
-
注册中心:集群内节点和任务状态同步更新,任务信息注册
-
监控中心:集成在调度台中,实现任务进度、任务超时、失败报警的实时监控