该文档是关于基于微服务架构的开源任务调度平台的深入探讨,主要关注微服务环境下的任务调度问题及其解决方案。文档涵盖了任务调度的不同类型、痛点、设计因素以及一个名为SIA(Simple is Awesome)的任务调度系统。
1. 任务调度类型:
- 固定时间任务:如Crontab,用于周期性执行的任务,如数据同步。
- 日历任务:支持特定日期的调度。
- 延时任务:如Fixeddelay,适合实时性要求高的业务。
- 固定间隔任务:如Fixedrate,用于保持固定的执行频率。
2. 微服务任务调度痛点:
- 单点/遗忘/依赖:任务可能缺乏结果或日志展示,且不支持动态配置。
- 缺失任务执行可控性:难以对任务执行进行有效监控和管理。
3. 考虑因素:
- 实时监控:对任务执行进行实时监控以确保正常运行。
- 可视化:通过图形界面展示任务状态和流程。
- 跨平台:支持多种操作系统和环境。
- 易用性和易扩展性:简化用户操作,方便系统扩展。
- 三高架构:高可用、高性能、高可扩展性。
- 任务分片:将大任务分解为小任务并行处理。
- 动态编辑:在运行时修改任务配置。
- 故障转移:当主节点故障时,能自动切换到备用节点。
- 无侵入:不影响微服务原有的架构和功能。
4. SIA-TASK系统:
- 自定义路由规则:允许用户根据需求定制任务执行路径。
- task上传+执行器注册:任务的上传与执行器的注册过程。
- Job发布:发布新的任务供执行器执行。
- 优先级抢占:根据任务优先级决定执行顺序。
5. 架构流程:
- 任务编排管理:管理任务的执行顺序和依赖关系。
- 执行器集群:处理并执行调度任务的分布式组件。
- 调度器核心:负责任务的调度决策。
- 注册中心:执行器和服务发现的重要组件。
- 编排中心:协调任务的执行流程。
6. 流式任务引擎:
- DAG图谱定义:定义任务间的依赖关系,支持串行、并行和分支执行。
7. 稳定性和负载能力提升:
- 设定容错阈值:确保单线程负载不超过1秒。
- 单个线程并发Job的Trigger:支持超过100个并发触发。
- Hunter和Thread设计:实现无侵入的多线程控制,确保单一任务实例的单线程运行,并支持作业生命周期管理和操作。
- 基于注解自动抓取任务:简化任务的管理和监控。
总结:这份文档详细阐述了微服务架构下任务调度的挑战、需求和解决方案,特别是介绍了SIA-TASK系统的设计思想和架构,对于理解如何在微服务环境中构建高效、可靠的调度平台具有重要参考价值。