分布式定时任务 | 青训营笔记

95 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第10天

本节课程主要涉及五个方面

  1. 分布式定时任务整体架构
  2. 控制台Admin详细设计
  3. 触发器Trigger详细设计
  4. 调度器Schedule详细设计
  5. 执行器Executor详细设计

分布式定时任务原因

单点定时任务的缺点:

功能相对简单,交互性差,任务部署效率低,开发和维护成本比较高,不能很好的满足各系统定时任务的管理和控制,尤其在多系统的环境下更加明显; 许多任务都是单机部署,可用性差; 任务跟踪和告警难以实现。

分布式定时任务的优势:

通过集群的方式进行管理调度,大大降低了开发和维护成本; 分布式部署,保证了系统的高可用性,伸缩性,负载均衡,提高了容错; 可以通过控制台部署和管理定时任务,方便灵活高效; 任务都可以持久化到数据库,避免了宕机和数据丢失带来的隐患,同时有完善的任务失败重做机制和详细的任务跟踪及告警策略。

Quartz是优秀的开源组件,它将定时任务抽象了三个角色:调度器、执行器和任务,以至于市面上的分布式定时任务框架都有类似角色划分。

功能列表

弹性调度

支持任务在分布式场景下的分片和高可用 能够水平扩展任务的吞吐量和执行效率 任务处理能力随资源配备弹性伸缩

资源分配

在适合的时间将适合的资源分配给任务并使其生效 相同任务聚合至相同的执行器统一处理 动态调配追加资源至新分配的任务

作业治理

失效转移 错过作业重新执行 自诊断修复

作业依赖(TODO)

基于有向无环图(DAG)的作业间依赖 基于有向无环图(DAG)的作业分片间依赖

作业开放生态

可扩展的作业类型统一接口 丰富的作业类型库,如数据流、脚本、HTTP、文件、大数据等 易于对接业务作业,能够与 Spring 依赖注入无缝整合

可视化管控端

作业管控端 作业执行历史数据追踪 注册中心管理

课程总结

本节课主要针对分布式定时任务架构进行了相关介绍,关于常用的开源组件Quartz我进行了相关查询,并进行了学习,希望可以继续学习进步。