联想基于Apache DolphinScheduler构建统一调度中心的应用实践
背景需求
- 定时通知任务
- ETL任务
- HTTP任务执行链
- 任务实时监控
- 丰富任务类型管理
- 运维脚本管理
- 业务系统开发的定时任务统一管理
- 上下游依赖的事件触发
- 任务调度可靠性保证
功能特点
- 运行隔离:支持业务独立的工作空间,不同工作空间互不影响。
- 易扩展:插件化支持,方便业务自定义扩展。
- 高可用:支持多租户,提供业务隔离。
- 分布式:支持集群扩展,调度能力随集群规模线性增长。
- 轻量化:非常轻量,适用于调度流程和启动任务。
- 易用性:支持多种任务类型,包括Java、Shell、Python等,支持自定义扩展。
DolphinScheduler功能一览
- DAG可视化:以有向无环图(DAG)形式展示任务连接,支持实时监控和操作。
- 任务结果参数传递:支持任务间的数据传递。
- 多分支支持:增强任务组件的能力。
- 工作流定义和任务关系拆分:更易通过API生成工作流。
- 版本控制:支持工作流版本管理。
DolphinScheduler架构设计
- 无中心设计:Master和Worker均采用无中心设计,提高系统的可靠性和灵活性。
- 负载均衡:支持多种策略,包括随机、循环及CPU和内存的线性加权负载均衡。
- 微内核架构:支持插件化扩展,便于二次开发。
联想落地实践
- Http任务参数传递:实现参数传递功能。
- Java任务插件开发:开发插件,每个任务对应一个方法,需Spring容器环境。
- 任务自定义参数:支持流程定义中的参数传递。
- 内部认证接入:实现内部认证接入功能。
3.x新特性和路线图
- 数据质量校验:支持多种工作流执行策略。
- UI重构:改进用户界面。
- 任务组:控制任务实例并发,支持优先级配置。
- 定时触发插件化:支持Quartz、时间轮等。
- 去zk实现高可用:增强系统的高可用性。
- DataOps:提升数据操作的效率和通用性。
- 云原生:适应云原生环境,支持弹性伸缩和多云能力。
- 任务pod化:任务本身的pod化支持。
通过上述分析可以看出,Apache DolphinScheduler在联想的应用实践充分体现了其在任务调度、监控、扩展等方面的强大功能和灵活性。