Apache DolphinScheduler 应用实践总结
背景
联想为满足定时通知任务、ETL任务、HTTP任务执行链、任务实时监控、丰富任务类型管理、运维脚本管理、业务系统定时任务统一管理、上下游依赖事件触发及任务调度可靠性保证等需求,构建了统一调度中心,并选择 Apache DolphinScheduler 作为核心调度框架。
功能需求与 DolphinScheduler 对比
联想对调度中心的核心需求包括:业务需求(易扩展、高可用、轻量化)、功能需求(线性扩展、分布式、丰富易用、业务隔离、易扩展)。通过对比 XXL-Job、DolphinScheduler 和 Airflow,DolphinScheduler 在云原生、分布式、易用性、社区活跃度及二次开发成本方面表现突出,成为首选。
DolphinScheduler 功能与架构
- 功能一览:支持 DAG 可视化、任务状态管理(提交成功、运行中、暂停、失败等)、任务结果参数传递、工作流血缘关系、数据同步组件、工作流定义与任务关系拆分、工作流版本控制。
- 架构设计:采用无中心设计,MasterServer 负责任务切分与监控,WorkerServer 负责任务生命周期管理。1.3.x 版本优化了数据库操作,减少调度延时,并引入多种任务分发策略。2.x 版本采用微内核+插件化架构,去除分布式锁,提升性能。
社区发展
DolphinScheduler 社区活跃度高,GitHub Star 从 2021 年 7 月的 100 上升至 2022 年 7 月的 8.2k,用户、开发者、提交者数量持续增长,已从 Apache Incubator 毕业并保持活跃。
联想落地实践
- 功能改造:实现了 Http 任务参数传递,开发了 Java 任务插件(通过 Spring 容器环境、@DolphinJavaMethodTask 注解、TaskLogger.log 日志打印),并支持任务自定义参数、流程定义全局参数、项目全局参数。
- 内部认证接入:完成了内部认证接入,确保系统安全性。
3.x 新特性与 Roadmap
- 3.x 新特性:支持数据质量校验、任务组、多种工作流执行策略(如串行等待)、UI 重构等。
- Roadmap:未来将聚焦个性化功能(API、SDK 集成)、数据质量、定时触发插件化、去 Zookeeper 实现高可用、依赖组件不可用时的调度保障、DataOps、通用性功能与性能优化、云原生(弹性伸缩、多云能力、容器调度)等方向。
总结
Apache DolphinScheduler 凭借其丰富的功能、灵活的架构、活跃的社区及满足联想业务需求的特性,成功应用于统一调度中心建设。未来版本将进一步提升数据质量、任务管理及云原生支持,持续推动调度系统发展。