2024年Apache DolphinScheduler RoadMap:引领开源调度系统的未来

news2024/9/30 1:26:58

非常欢迎大家来到Apache DolphinScheduler社区!随着开源技术在全球范围内的快速发展,社区的贡献者 “同仁” 一直致力于构建一个强大而活跃的开源调度系统社区,为用户提供高效、可靠的任务调度和工作流管理解决方案。

file

在过去的一段时间里,我们取得了一些重要的成就,但我们的愿景远未实现。为了更好地满足用户需求和推动项目的发展,我们在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

file

任务插件增强

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特定事件触发工作流

file

详情请看链接: 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的蓬勃发展和创新旅程。

 

本文由 白鲸开源科技 提供发布支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1472899.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录|学习工具分享

工具分享 画图 https://excalidraw.com/ 大家平时刷题可以用这个网站画草稿图帮助理解!如果看题解很蒙或者思路不清晰的时候,跟着程序处理流程画一个图,90%的情况下都可以解决问题! 数据结构可视化 https://www.cs.usfca.edu/…

【Java设计模式】一、工厂模式、建造者模式、原型设计模式

文章目录 1、简单工厂模式2、工厂方法模式3、抽象工厂模式4、建造者模式5、原型设计模式 设计模式即总结出来的一些最佳实现。23种设计模式可分为三大类: 创建型模式:隐藏了创建对象的过程,通过逻辑方法进行创建对象,而不是直接n…

逆序或者正序打印一个数的每一位数,递归实现(C语言)

从键盘上输入一个不多于5位(包括5位)的正整数,要求 (1)求出它是几位数;(2)分别输出每一位数字(3)按逆序输出各位数字 (1)求出它是几位…

Linux浅学笔记04

目录 Linux实用操作 Linux系统下载软件 yum命令 apt systemctl命令 ln命令 日期和时区 IP地址 主机名 网络传输-下载和网络请求 ping命令 wget命令 curl命令 网络传输-端口 进程 ps 命令 关闭进程命令: 主机状态监控命令 磁盘信息监控&#xff1a…

【MQ05】异常消息处理

异常消息处理 上节课我们已经学习到了消息的持久化和确认相关的内容。但是,光有这些还不行,如果我们的消费者出现问题了,无法确认,或者直接报错产生异常了,这些消息要怎么处理呢?直接丢弃?这就是…

深入理解计算机系统学习笔记

第三章 程序的机器级表示 3.2.1 机器级代码 对于机器级编程来说,其中两种抽象尤为重要。第一种是由捍令集体系结构或指令集架构(Instruction Set Architecture, ISA)来定义机器级程序的 格式和行为,它定义了处理器状态、指令的格式&#xf…

在Ubuntu上为ARM 8处理器安装Python 3.10.4虚拟环境指南

在Ubuntu上为ARM 8处理器安装Python 3.10.4虚拟环境指南 安装Anaconda或Miniconda: 首先,您需要从官方网站下载适用于ARM架构的Anaconda或Miniconda安装包。下载完成后,在终端中使用bash Anaconda3-2019.10-Linux-armv8.sh(文件…

将仓库A中的部分提交迁移到仓库B中

结论: 使用git format-patchgit am即可实现 使用场景: 例如仓库A这里有5个提交记录,commitid1, commitid2, commitid3, commitid4,commitid5 仓库B想用仓库A中提交的代码,手动改比较慢,当改动较多的时候…

2.26 Qt day4+5 纯净窗口移动+绘画事件+Qt实现TCP连接服务+Qt实现连接数据库

思维导图 Qt实现TCP连接 服务器端&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer>//服务器端类 #include<QTcpSocket>//客户端类 #include<QMessageBox>//消息对话框类 #include<QList>//链…

2024-02-26(Spark,kafka)

1.Spark SQL是Spark的一个模块&#xff0c;用于处理海量结构化数据 限定&#xff1a;结构化数据处理 RDD的数据开发中&#xff0c;结构化&#xff0c;非结构化&#xff0c;半结构化数据都能处理。 2.为什么要学习SparkSQL SparkSQL是非常成熟的海量结构化数据处理框架。 学…

实践航拍小目标检测,基于轻量级YOLOv8n开发构建无人机航拍场景下的小目标检测识别分析系统

关于无人机相关的场景在我们之前的博文也有一些比较早期的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《deepLabV3Plus实现无人机航拍目标分割识别系统》 《基于目标检测的无人机航拍场景下小目标检测实践》 《助力环保河道水质监测&#xff0c;基于yolov…

掌握ChatGPT润色绝技:什么是人工智能写作以及如何使用它来完成写作任务

如对AI写论文感兴趣&#xff0c;欢迎添加作者wx讨论 : ryan_2982 人工智能 (AI) 的出现开创了技术进步的新时代&#xff0c;彻底改变了包括写作和内容创作在内的各个行业。人工智能写作和人工智能提示已成为可以简化和增强写作任务的强大工具。在这篇博文中&#xff0c;我们将…

C++多线程学习09:并发队列

参考 链接&#xff1a;恋恋风辰官方博客 并发队列&线程安全栈 代码结构&#xff1a; 并发队列ThreadSafeQueue.h&#xff1a; #pragma once#include <mutex> #include <queue>template<typename T> class threadsafe_queue { private:mutable std::m…

深入理解Python中的JSON模块:基础大总结与实战代码解析【第102篇—JSON模块】

深入理解Python中的JSON模块&#xff1a;基础大总结与实战代码解析 在Python中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;模块是处理JSON数据的重要工具之一。JSON是一种轻量级的数据交换格式&#xff0c;广泛应用于Web开发、API通信等领域。本文将…

linux操作系统期末练习题

背景&#xff1a; 一、远程登录 1&#xff0e;利用远程登录软件&#xff0c;以用户userManager(密码123456)&#xff0c;远程登录教师计算机&#xff08;考试现场给出IP地址&#xff09;&#xff0c;只有操作&#xff0c;没有命令。 2&#xff0e;以stu班级学生个人学号后3位…

goland配置新增文件头

参考&#xff1a; goland函数注释生成插件 goland函数注释生成插件_goland自动加函数说明-CSDN博客 GoLand 快速添加方法注释 GoLand 快速添加方法注释_goland批量注释-CSDN博客 goland 如何设置头注释&#xff0c;自定义author和data goland 如何设置头注释&#xff0c;自定…

spring boot 集成科大讯飞星火认知大模型

一、安装依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/…

springboot003图书个性化推荐系统的设计与实现(源码+调试+LW)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SpringBoot的图书个…

SOLIDWORKS 查找并修复装配体配合错误

我们在SOLIDWORKS 正版软件进行装配体装配时&#xff0c;时常会出现一些报错&#xff0c;例如在配合、装配体特征或被装配体参考引用的零部件和子装配体中。一些常见的错误&#xff0c;如一个零部件的过定义会引发更多其他错误信息&#xff0c;并导致装配体停止解析配合关系。下…

RestTemplate启动问题解决

⭐ 作者简介&#xff1a;码上言 ⭐ 代表教程&#xff1a;Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容&#xff1a;个人博客系统 ⭐我的文档网站&#xff1a;http://xyhwh-nav.cn/ RestTemplate启动问题解决 问题&#xff1a;在SpringCloud架构项目中配…