我是Apache DolphinScheduler的PMC和Apache的导师,一直致力于帮助国内的开源项目在Apache孵化器孵化,并在Apache峰会上担任出品人。致力于让世界认识到中国同样拥有卓越的开源技术。
我目前也在白鲸开源担任联合创始人,一直秉持着通过开源商业化让开源可持续发展的理念,白鲸开源致力于提供Dataops的全链路解决方案。我们目前主要参与了两个Apache的顶级项目——其中之一就是Apache DolphinScheduler。
DataOps,这一概念源于DevOps,旨在构建从数据开发到部署上线直至生产流程的端到端打通。在现行的Apache DolphinScheduler中,我们已成功地简化了开发到上线的流程,通过使用Gitlab或私有仓库,可以便捷地降低成本、提升效率,并增强dataops的能力。
项目简介
Apache DolphinScheduler起源于2017年,并在2021年成为Apache的顶级项目。它是首个由国人主导的、也是目前国内最受欢迎的调度项目之一。其市场占有率高达90%,反映了其在行业中的影响力和认可度。
在项目开源之初,设定的核心目标包括:
- • 易用性:我们希望无论开发、运维还是使用,都尽可能简单直观。
- • 高可用:为满足大数据平台高稳定性的需求,我们致力于实现调度系统的高可用性。
- • 多样的任务类型和依赖支持:包括跨工作流依赖和自依赖等。
- • 完善的任务日志和告警机制:能够实时直观地把握任务的运行状态。
回望过去,至今我们已实现了2017年初设定的多数功能标准,并在开源版本中进行了完整的展现。
技术架构及迭代历程
关于架构的演进,我们经历了三次重大的迭代,每次都持续了半年至一年的时间。在最初的设计中,我们采用无中心化的架构,Master Server和Work Server之间通过一个中间的消息队列(TaskQueue)进行隔离。
但在1.x版本中,我们发现Work Server直接与数据库交互会产生一些问题,例如在面对大量机器时,数据库链接可能饱和,产生巨大压力。因此,在后续的版本中,我们对Work Server进行了重构,移除了其与数据库的直接交互,以解决这一痛点。
在最近的版本中,我们进一步优化了Apache DolphinScheduler的性能和功能。到现在,尽管我们已经发布了3.0版本,1.x版本还是停止了维护(版本维护的精力不够),但通过社区的努力,我们已经推出了2.x和3.x的多个小版本。社区已经拥有500多名代码贡献者和120多名文档贡献者,覆盖了包括电信、新能源、物流等多个行业。
2.0版本
架构2.0的设计至今仍然在继续沿用。其核心概念包括:
- • 使用Master Server和Work Server组件。
- • 当Master有任务时,它会直接分发给Work Server进行处理。
- • 工作完成后,Work Server首先回应一个Ack,并返回相应的Response。
- • 这个版本的特点是不再与数据库直接关联,这是在架构上的重要设计变化。
不过,由于时间限制,我不会在这里详细解释这个架构。
3.2.0 版本
3.2.0版本的重点更新如下:
- • 功能注册中心:引入了ETCD和JDBC作为注册中心,导致ZK的地位逐渐减弱,我们考虑将ZK完全替换。
- • 高可用性:Alert Server从单点模式到HA模式。
- • 数据库优化:Work Server已经移除了对Dao的依赖,从而彻底断开了与数据库的关联。
- • 资源中心:支持了OSS等对象存储,并增加了对各种数据源的支持,例如,Mysql的Connector现在也支持Doris。
此外,我们为新版本增添了许多其他功能,如动态任务配置、数据源支持、多任务类型、机器学习功能等。此版本的迭代周期为一年,因此功能非常丰富。
社区对3.2.0版本做出了巨大的贡献。一些值得一提的改进包括:
- • 数据迁移工具如Datax现在支持Presto和Databend。
- • SQL增加了支持多语句的切割。
- • 引入了远程日志线,允许日志存储在远端。
- • 参数优化,尤其是日期参数。
- • 自定义K8S的任务标签
此外,前端功能得到了增强,例如,从工作流定义中可以直接跳转到其所有的工作流实例等,包括社区吐槽了很久的从Open API去调工作流或者是运行的时候,拿不到返回实例的ID等等问题,这些都在3.2.0版本解决了。
实际应用与客户接纳
Apache DolphinScheduler在商业领域已经获得了显著的认可和广泛的应用。部分大型企业,每天需处理数百万的任务调度量,验证了其在高负载场景下的稳定性和效率。
例如,我们的客户——平安和SHEIN——这些具有海外业务的公司,已从其他流行的工作流调度系统(如Airflow)迁移到DolphinScheduler平台。这不仅体现了DS的强大功能和优越性能,也反映了其在国际市场上的竞争力。
开源版与商业版对比
尽管开源版已经包含了丰富的功能,但商业版考虑到了更多的企业需求,基于最新3.2.0版本开发了更多的功能。商业版的一些亮点包括:
- • 支持更多的数据库,如Teradata、达梦和TDSQL。
- • 支持复杂的CDC能力
- • 增强的IDE功能,整合了VS Code,并提供了调试功能。
- • OPS功能,实现与Git的集成。
- • 更为复杂和完善的权限控制。
总的来说,这次的架构更新为用户带来了更强大、更稳定的系统体验。而社区的贡献也显示出了这个项目强大的生命力。
业务日期和运行态管理
在开源版本中,大多数用户倾向于使用定时日期。然而,在商业版本中,我们引入了“业务日期”这一概念,以及与之关联的翻牌机制和更完善的运行态管理。
例如,对于一些需在特定时间点完成的任务(如监管报送等高优先级任务),我们实现了工作流的优先级管理,并确保与其相关的所有节点也将优先执行.
强大的血缘功能
我们在商业版本中投入了大量精力以强化血缘功能。用户能够查看所有依赖的任务及其依赖关系,以及追踪到其祖先。
这一点在开源版中可能无法实现,尤其在跨工作流的依赖关系管理方面。
数据源的增强支持
在数据源的支持方面,商业版显著超过开源版,支持的数据源数量大约是后者的数倍。WhaleStudio 提供了对 IDE 的增强支持,例如在线调试 IDE 的能力,这是我们认为对开发者极为有利的一个特点。
重新塑造权限和审计功能
在我们的商业产品—WhaleStudio中,用户角色权限和审计功能得到了特别的重视。这不仅是商业版必备的一项能力,即便在开源版中我们也实现了审计功能(尽管其功能相对较弱)。
商业版的 WhaleStudio 包含两个主要模块:WhaleScheduler 和 WhaleTunnel,它们分别对应于开源的 Apache DolphinScheduler 和 Apache SeaTunnel 。
通过增加更广阔的生态圈和支持更完善的 DataOps 流程,以及可操作性时间管理(如支持日历、业务日期翻牌)等功能,我们力图在商业版中提供更全面的支持。
安全漏洞扫描
安全方面,商业版进行了漏洞扫描,而开源版通常不会进行此类扫描,因为其成本较高。
我们在保证商业版的安全性方面做了很多工作,以确保能够适应中国的国情和满足信创的要求。
与上下游生态的融合
我们已与数十家上下游生态企业实现了打通,尤其在数据同步和调度方面,我们努力打通各种数据库和各类SaaS服务,包括FTP、HTTP等,确保与上下游生态的关系非常紧密。
社区全球化发展
社区目前已展现出全球化的迹象,服务着来自世界各地的用户,包括印度、韩国等国家的公司。我们的社交媒体平台,如Twitter、B站等,也为全球用户提供了便捷的信息查询通道。
如果您在使用 Apache DolphinScheduler 遇到以下问题,非常欢迎联系我们:
1、调度系统不够稳定2、调度系统出现性能瓶颈3、Apache DolphinScheduler 版本过低想升级4、遇到问题需要产品技术支持服务和培训5、信创适配,商业版支持全栈信创6、Apache DolphinScheduler 现有功能不能满足您的需求等