这是我参与「第五届青训营 」伴学笔记创作活动的第10天
本节课程主要涉及五个方面
- 分布式定时任务整体架构
- 控制台Admin详细设计
- 触发器Trigger详细设计
- 调度器Schedule详细设计
- 执行器Executor详细设计
分布式定时任务原因
单点定时任务的缺点:
功能相对简单,交互性差,任务部署效率低,开发和维护成本比较高,不能很好的满足各系统定时任务的管理和控制,尤其在多系统的环境下更加明显; 许多任务都是单机部署,可用性差; 任务跟踪和告警难以实现。
分布式定时任务的优势:
通过集群的方式进行管理调度,大大降低了开发和维护成本; 分布式部署,保证了系统的高可用性,伸缩性,负载均衡,提高了容错; 可以通过控制台部署和管理定时任务,方便灵活高效; 任务都可以持久化到数据库,避免了宕机和数据丢失带来的隐患,同时有完善的任务失败重做机制和详细的任务跟踪及告警策略。
Quartz是优秀的开源组件,它将定时任务抽象了三个角色:调度器、执行器和任务,以至于市面上的分布式定时任务框架都有类似角色划分。
功能列表
弹性调度
支持任务在分布式场景下的分片和高可用 能够水平扩展任务的吞吐量和执行效率 任务处理能力随资源配备弹性伸缩
资源分配
在适合的时间将适合的资源分配给任务并使其生效 相同任务聚合至相同的执行器统一处理 动态调配追加资源至新分配的任务
作业治理
失效转移 错过作业重新执行 自诊断修复
作业依赖(TODO)
基于有向无环图(DAG)的作业间依赖 基于有向无环图(DAG)的作业分片间依赖
作业开放生态
可扩展的作业类型统一接口 丰富的作业类型库,如数据流、脚本、HTTP、文件、大数据等 易于对接业务作业,能够与 Spring 依赖注入无缝整合
可视化管控端
作业管控端 作业执行历史数据追踪 注册中心管理
课程总结
本节课主要针对分布式定时任务架构进行了相关介绍,关于常用的开源组件Quartz我进行了相关查询,并进行了学习,希望可以继续学习进步。