2024年Apache DolphinScheduler RoadMap:引领开源调度系统的未来
非常欢迎大家来到Apache DolphinScheduler社区!随着开源技术在全球范围内的快速发展,社区的贡献者 “同仁” 一直致力于构建一个强大而活跃的开源调度系统社区,为用户提供高效、可靠的任务调度和工作流管理解决方案。
在过去的一段时间里,我们取得了一些重要的成就,但我们的愿景远未实现。为了更好地满足用户需求和推动项目的发展,我们在2024 新春伊始,制定了以下Roadmap,将在未来的版本中实现一系列激动人心的功能和改进。
当前社区状态
2024 年 roadmap 有两个来源,部分是来自 2023 年发起但是没有开始实施,或者实施了部分的议题,另一部分是最新新增的议题。2024 年 roadmap 可以分成如下几个部分
云原生相关: 我们希望增加 K8S executor 复用 K8S 提供的能力做弹性资源管理、监控和失败重试等
任务插件增强: 我们收到了用户关于任务插件的诉求,将会进一步支持 streaming 类型的任务、trigger 类型插件等,除此之外,我们还希望统一在worker 和master 中运行的任务、以及为任务插件增加生命周期的接口。于此同时我们会持续关注动态任务组件的功能,希望以后可以对任务组件单独发版保证迭代频率
DataOps 相关:希望引入 data ops 相关功能,通过集成 git 供应商来实现 git ops,最终实现工作流 CICD
测试: 我们会继续完善和增加项目单元测试覆盖率,并且逐步补充 API 部分的测试
其他优化:引入工作流事件触发功能;优化审计日志
云原生相关
我们希望引入 K8S executor 作为 dispatcher 将 dolphinscheduler 的任务分发到 K8S 中,K8S executor 的好处是我们可以有更高的资源利用率;沿用 K8S 的监控机制,实现 pod level 的监控;沿用 pod 容错做任务容错。
这个设计的核心是将executor 的抽象出来变成可配置的, 用户可以选择 K8S 或者非 K8S 的 executor,如果选择 K8S executor ,dolphinscheduler 会将任务提交到 K8S API server ,每个任务启动一个 worker,运行一个 pod。这一点的好处是 worker 不是一个长期运行的资源,而是仅当有任务的时候才需要启动。当业务低谷的时候,我们有空运行的worker 来等待任务运行。
详情请看链接:https://github.com/apache/dolphinscheduler/issues/13316
任务插件增强
streaming 任务类型增强
2023年 dolphinscheduler 社区增加了 streaming 任务类型的支持,但是是使用shell 提交 flink 任务,一经推出收获了不少用户。当时实现的是一个简单版本,想看看用户反馈,开发者在开发过程,以及用户的使用中发现了部分可优化项。这部分优化项目我们希望能在 2024 年有部分进展,其中包括
- 使用 flink sdk 去创建和提交任务,目前的 shell 方式提交不能很好的监控和处理运行中的任务,使用 sdk 可以有更多功能的支持,详情请看链接: https://github.com/apache/dolphinscheduler/issues/11440
- 支持 flink sql
- 增加 flink 的指标
- 增加 checkpoints savepoint 管理,保证任务失败重试等异常情况能继续执行
详情请查看 https://github.com/apache/dolphinscheduler/issues/11352
动态任务组件 & 任务单独发版
这个任务是引入动态任务组件的概念,将任务组件的参数通过后端定义,然后在前端渲染,希望通过这样方法化简任务组件的开发流程,在参数的输入类型没有新增的情况下,可以不修改或者少修改前端代码而实现任务组件的新增和修改。
详情请看链接:https://github.com/apache/dolphinscheduler/issues/12526
同时这个任务也是我们将任务插件单独发版的前置任务,任务插件单独发版也是非常重要的功能,实现了这个功能后,我们可以加快任务插件的发版频率,保证用户使用的是功能丰富、最新的任务插件。例如我们有一个新的任务插件 A ,这个插件在昨天被 merge 到 dev 分支,那么我们今天就能安排这个插件的发版。又例如我们发现了已经发版的任务插件 B 有比较严重的 bug,在 这个bug 被 fix 后,我们就能安排插件的bugfix 版本发版。
这个任务已经实现了已经简单的demo,详情请看链接: https://github.com/apache/dolphinscheduler/issues/12526
任务插件生命周期管理
为任务插件增加 close 方法从而更好的管理任务插件,特别是需要关闭资源的的任务组件,如数据库、云计算资源任务等。我们目前为任务插件定义了 init、handle、cancel 等方法,对于关闭资源的方法都是在任务中单独实现的,所以希望抽象一个 close 方法统一处理需要关闭资源的任务。
详情请看链接: https://github.com/apache/dolphinscheduler/issues/14877
统一 worker 和逻辑任务
dolphinscheduler 现在有两个类型的任务 spi,分别是 worker 任务和逻辑任务,这两种任务类型分别是运行在 worker 上的,以及运行在 master 上的。不同的 spi 导致两种任务有不同的生命周期管理,并且不利于后面动态任务组件的实现,所以需要将两种任务尽可能弄成统一spi。
详情请看链接: https://github.com/apache/dolphinscheduler/issues/14823
Git Ops
dolphinscheduler 在处理生产和开发环境的时候,只能通过json导入导出来实现,社区部分伙伴建议我们可以使用 gitops 方法论来实现开发到生产环境的部署。GitOps 是一种基于版本控制系统的持续交付和基础设施管理的方法。它的核心理念是将整个系统的状态和配置存储在版本控制库中,通过Git的特性实现对系统的自动化管理和持续交付。
gitops 支持
希望将工作流相关资源的校验、工作流部署到生产环境的功能集成到 dolphinscheduler 中,集成之后只需要在 dolphinscheduler 配置 git 供应商的 url 和鉴权信息,就能在远程仓库中有新的push 事件后,立马触发工作流的更新操作,从而保证生产中的工作流和远端 git 供应商的定义是一样的,实现客户的 cicd ,保证流程简单便捷
测试
测试对于开源软件至关重要,它不仅确保软件质量和稳定性,还提高了用户体验。通过全面的测试,可以及时发现和修复潜在的问题,增强软件的可靠性。测试也是保证新功能引入不破坏现有功能的关键,为开源项目的可持续发展提供了坚实的基础。dolphinscheduler 社区从 2023 年一直在努力提高测试覆盖度、并做了优化让贡献者更加方便的写测试,但是测试的增强是一个长期的工作,2024 年我们会坚持这部分内容
API 测试
在 api 层面的测试,确保我们核心的 api 接口能正常运行。当被 api 测试覆盖的接口,可以确保每次提交新代码时,API 接口逻辑和依赖关系都正确,不会破坏之前已有的功能。补充缺失的单元测试,确保接口与接口之间的连接性。dolphinscheduler 社区在 2023 年已经启动 api 测试的补充,目前部分核心接口已经覆盖,希望在 2024 年将尽可能多的 api 接口进行覆盖。
详情请看链接: https://github.com/apache/dolphinscheduler/issues/10411
UT 增强
单元测试对比 API 测试是粒度更加小的,他能保证部分代码块如预期般工作,在此之前我们升级到了 junit5,并且增加了worker 部分的测试覆盖率,与 api 测试一样的是,这是一个长期的工作,同时需要更多有激情的贡献者参与到该功能的建设中。
详情请看链接: https://github.com/apache/dolphinscheduler/issues/10573
其他优化
工作流 trigger 支持
引入 trigger 插件实现事件触发,目前我们工作流的启动方式有两种,用户手动触发;定时触发。事件触发是希望增加其中的范围,让工作流可以被更多的事件触发。目前打算支持的事件包括
- 定时触发: 目前已经有的触发方式
- 消息队列触发:通过消息监听消息队列的方式触发工作流
- HTTP、TCP、SMTP 触发:通过监听HTTP、TCP、SMTP特定事件触发工作流
详情请看链接: https://github.com/apache/dolphinscheduler/issues/15330
审计日志增强
Apache Dolphinscheduler 会在 2024 年增加更多的审计日志相关的功能,保证将用户对资源的操作能记录下来,这里的资源包括项目、工作流、任务、资源中心文件、udf、数据源等在 dolphinscheduler 中会被创建、修改、删除、更新的资源。
我们目前打算通过 AOP 的方式实现这个功能,实现了审计日志后,用户可以更好的查看资源创建情况,当出现意外情况时及时通过审计日志发现历史操作。
目前有一个 PR 初步实现了这个功能,详情请看链接: https://github.com/apache/dolphinscheduler/issues/15423
随着这份路线图的实施,Apache DolphinScheduler社区将持续优化和扩展我们的调度系统,为用户提供更加强大、灵活和高效的解决方案。
我们相信,通过社区成员的共同努力和用户的积极反馈,Apache DolphinScheduler将继续领跑开源调度和工作流管理领域,为企业和开发者带来更多的价值和可能性。让我们携手并进,共同见证Apache DolphinScheduler的蓬勃发展和创新旅程。
本文由 白鲸开源 提供发布支持!
2024年Apache DolphinScheduler RoadMap:引领开源调度系统的未来的更多相关文章
- Hadoop 开源调度系统zeus(二)
紧跟之前Hadoop 开源调度系统zeus(一) 本节主要介绍一下zeus的架构: 先给一个zeus的架构图 无论Master还是Worker都有一套WEB UI,无论从哪个上面去看,看到的结果都是一 ...
- 【Meetup回顾】Apache DolphinScheduler在联通的实践和二次开发经验分享
在由 openLooKeng 社区主办,Apahce DolphinScheduler社区.Apache Pulsar 社区.示说网协办的联合 Meetup 上,来自联通数字科技的王兴杰老师分享了Do ...
- 金灿灿的季节 - Apache DolphinScheduler收获5位新Committer
在这个金灿灿的收获季节,经过 Apache DolphinScheduler PPMC 们的推荐和投票,Apache DolphinScheduler 收获了 5 位新Committer .他们是:n ...
- Apache DolphinScheduler 迎来 2 位 PPMC
经过 Apache DolphinScheduler PPMC 们的推荐和投票,我们高兴的宣布:Apache DolphinScheduler 迎来了 2 位 PPMC .他们是(github id) ...
- 金秋十月 - Apache DolphinScheduler 收获 2 位新 Committer
点击上方蓝字关注 Apache DolphinScheduler Apache DolphinScheduler(incubating),简称"DS", 中文名 "海豚调 ...
- 日均 6000+ 实例,TB 级数据流量,Apache DolphinScheduler 如何做联通医疗大数据平台的“顶梁柱”?
作者 | 胡泽康 鄞乐炜 作者简介 胡泽康 联通(广东)产业互联网公司 大数据工程师,专注于开源大数据领域,从事大数据平台研发工作 鄞乐炜 联通(广东)产业互联网公司 大数据工程师,主要从事大数据平 ...
- 大数据平台迁移实践 | Apache DolphinScheduler 在当贝大数据环境中的应用
大家下午好,我是来自当贝网络科技大数据平台的基础开发工程师 王昱翔,感谢社区的邀请来参与这次分享,关于 Apache DolphinScheduler 在当贝网络科技大数据环境中的应用. 本次演讲主要 ...
- 杭州思科对 Apache DolphinScheduler Alert 模块的改造
杭州思科已经将 Apache DolphinScheduler 引入公司自建的大数据平台.目前,杭州思科大数据工程师 李庆旺 负责 Alert 模块的改造已基本完成,以更完善的 Alert 模块适应实 ...
- Apache DolphinScheduler 1.3.9 发布,新增 StandaloneServer
点击上方 蓝字关注我们 2021 年 10 月 22 日,Apache DolphinScheduler 正式发布 1.3.9 版本.时隔一个半月,在社区贡献者的共同努力下,Apache Dolphi ...
- 我在Apache DolphinScheduler的心路历练
摘要:Apache DolphinScheduler 目前是 Apache 孵化项目,目前正在快速发展中.加入Apache DolphinScheduler社区已一年多,已有 400+ 公司在生产上使 ...
随机推荐
- python 日志写入文件,参数说明及动态判断文件是创建还是追加
import logging import os ''' 格式符 含义 %(levername)s 日志级别名称 %(pathname)s 当前执行程序的路径(即脚本所在的位置) %(filename ...
- 【Playwright+Python】系列教程(一)环境搭建及脚本录制
前言 看到这个文章,有的同学会说: 六哥,你为啥不早早就写完python系列的文章. 因为有徒弟需要吧,如果你也想学自学,那这篇文章,可以说是我们结缘一起学习的开始吧! 如果对你有用,建议收藏和转发! ...
- sqlUtil
package com.cmbchina.monitor.utils;import com.alibaba.druid.sql.ast.SQLStatement;import com.alibaba. ...
- 小白也能懂的Mysql数据库索引详解
核心概念 主键索引/二级索引 聚簇索引/非聚簇索引 回表/索引覆盖 索引下推 联合索引/最左联合匹配 前缀索引 explain 一.[索引定义] 1.索引定义 在数据之外,数据库系统还维护着满足特定查 ...
- 缺氧debu模式
OxygenNotIncluded_Data(E:\SteamLibrary\steamapps\common\OxygenNotIncluded\OxygenNotIncluded_Data) 文件 ...
- 快速调用 GLM-4-9B-Chat 语言模型
一.确认本机显卡配置 二.下载大模型 国内可以从魔搭社区下载, 下载地址:https://modelscope.cn/models/ZhipuAI/glm-4-9b-chat/files 三.运行官方 ...
- 实测分享,瑞芯微RK3588八核国产处理器性能测评!确实“遥遥领先”!
RK3588处理器优势 RK3588是瑞芯微最新一代旗舰工业处理器,它具有如下卓越优势: 超强运算能力:四核ARM Cortex-A76@2.4GHz + 四核ARM Cortex-A55@1.8GH ...
- SpringBoot集成Mongodb文档数据库
添加Maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...
- Vue源码剖析
目录 Vue 响应式数据 Vue 中如何进行依赖收集 Vue 中模板编译原理 Vue 生命周期钩子 Vue 组件 data 为什么必须是个函数? nextTick 原理 set 方法实现原理 虚拟 d ...
- <script> 和 <script setup> 的一些主要差别
<script setup> 是 Vue 3 中的新特性,它是一种简化和更具声明性的语法,用于编写组件的逻辑部分.相比之下,<script> 是 Vue 2 中常用的编写组件逻 ...