DolphinScheduler 3.3.0版本更新一览

news2024/11/18 4:43:29

Apache DolphinScheduler即将迎来3.3.0版本的发布,届时将有一系列重要的更新和改进。在近期的社区5月份用户线上分享会上,项目PMC 阮文俊为大家介绍了3.3.0版本将带来的主要更新和改进,并为大家指出了如何参与社区的方式。

什么是DolphinScheduler?

DolphinScheduler是一个开源的项目,主要用来进行工作流编排、运行和管理。 它有四个重要的特点:

  • 工作流是基本单位,所有的功能设计都是围绕工作流
  • 这是一个低代码平台,可以不用代码,或用少量的代码来完成工作流相关的工作
  • 不用数据迁移即可进行服务器节点的扩缩容
  • 采用插件化架构

工作流是基本单位

  • 工作流可以包含任务和子工作流,每个任务都需要属于一个工作流。
  • 工作流可以依赖其他工作流,工作流是最小的执行单元。
  • 工作流的执行支持手动或自动触发。

file

无/低代码操作

  • 可以在UI门户,通过页面托拉拽的交互方式完成工作流的定义和管控操作;
  • 也可以通过OpenAPI或PyDolphinScheduler来完成对工作流的相关操作。

file file

无需数据迁移进行扩缩容

  • 元数据存储在共享的关系数据库中,无需数据迁移即可扩展系统。
  • 服务上线时自动注册到集群,服务下线时,运行中的任务自动转移,无需人工介入。

file

file

插件化架构

  • 工作流引擎之外的组件以插件形式实现。
  • 报警插件:Email、Http、微信、Slack等
  • 任务插件:Shell, SQL, Spark, K8s等
  • 数据源插件:Mysql, PG, Oracle等
  • 支持Zookeeper、JDBC、ETCD作为注册中心
  • 支持HDFS、S3、OSS等存储系统

接下来看一下3.3.0版本中有哪些新的变化。

3.3.0版本更新一览

架构更新

3.3.0版本在整体架构和部署方式上没有太大的变化,依然是三个核心服务:API主要用来做一些源数据的管理和授权方面的事情,Master主要是用来做工作流的编排和执行,Worker主要用来做任务的执行和管控。大部份核心组件通过插件的方式被加载。

file

新版中的一些重大变化包括:

新的任务插件接口

之前的版本在任务插件定义上有着如下问题:

  • 任务插件中的方法与生命周期不匹配,在任务插件定义上没有暴露生命周期的方法,导致任务插件实现时会缺失,暂停、容错等控制方法。。
  • 目前的任务插件接口过于复杂,任务插件接口包含很多子插件的方法,导致任务插件接口越来越膨胀。

3.3.0版本将引入新的任务插件定义接口(V2版本)来管理任务插件实例的生命周期。任务插件实例的生命周期管理包括运行、暂停、杀死、容错、成功和失败状态。

新的任务插件接口会更加清晰明了:

file

  • 增加ITaskApplicationContext:表示任务插件实例运行的上下文信息,例如 processId、applicationId
  • 增加ITaskListenerManager:可以注册用于侦听任务插件实例的信息更改,便于对任务执行流程进行扩展

容错改进

  • Master容错:
    • 对下线的Master节点持有的工作流程进行容错
    • 插入工作流容错命令
    • 工作流容错将从Worker服务器接管正在运行的任务
  • Worker容错:
    • 处理下线的Worker节点运行的任务
    • 把容错任务分发给新的Worker节点
    • 不同的任务插件的容错行为可能会不同
    • 支持精确一次(exactly-once)、至少一次(at-least-once)、至多一次(at-most-once)的容错行为

file

参数优先级统一

此前,DolphinScheduler中有多重参数类型,包括启动参数、工作流定义参数、任务定义参数、租户参数等,但存在的问题是这些参数没有统一的优先级,有些参数在运行时无法更改。 在3.3.0版本中,我们对参数优先级进行了优化:

  • 统一了参数优先级,遵循就近原则,如启动参数 > 任务定义参数 > 工作流定义参数。
  • 启动参数优先级最高,其他参数可被启动参数覆盖,解决了参数优先级不一致以及某些参数无法在运行时更改的问题。

工作流触发解耦

目前,DolphinScheduler中所有工作流触发都通过命令表示。目前的方式存在以下弊端:

  • 只能在数据库中插入触发命令,trigger与数据库严格绑定
  • 没有触发命令的schema,难以扩展新的触发

新版本对工作流触发进行了解耦,并可以通过消息中间件来进行工作流触发:

  • 提供了标准的Trigger schema,方便扩展trigger
  • 引入CommandEngine组件来探测待处理的命令
  • 命令的repository不再仅限于关系型数据库,支持从流式系统(如Kafka)中消费命令

file

事件线程模型改进

当前,DolphinScheduler Master中存在两个事件线程池,分别处理工作流事件和任务状态变更事件。这样的模型导致运行中很难协调这两个线程池,而且事件的顺序可能会丢失,并且用户也很难去设置这两个线程池的大小。

file

为了改变这一点,3.3.0中做了以下优化:

  • 合并两个事件线程池,一个工作流中的所有事件按FIFO顺序在事件队列中处理
  • 提供了更多的事件指标和事件查询接口,便于监控和管理工作流事件

file

支持接入多个Hadoop/S3集群

3.3.0之前版本中,当当资源中心配置HDFS/S3,配置第三方系统任务时只能通过配置文件去进行配置,这就导致在运行时不能新增Hadoop集群或S3集群。而且配置文件过大。 新版本中这一块有了变化:

  • 允许在元数据存储中进行配置
  • 支持多个集群
  • 支持在运行时添加新集群
  • 不同任务可以使用不同的集群

file file

AlertServer改进

AlertServer通过HA实现了高可用,使用单线程发送警报。这就导致需要使用额外的机器来部署AlertServer。 新版本中,允许用户将AlertServer嵌入API服务器,并采用多线程模型发送警报,提高了效率。

file

以上为Apache DolphinScheduler 3.3.0版本将带来的新功能与优化项参考,具体更新内容请关注官网和GitHub发布消息。

如何参与社区

  • 邮件:是讨论问题的首选方式,包括用户和开发者邮件列表,用来讨论使用问题、设计方案、新的想法等,以及新版本发布投票。
    • 用户组邮件:users@dolphinscheduler.apache.org
    • 开发者邮件:dev@dolphinscheduler.apache.org
  • GitHub:是参与项目最简单的方式,包括DolphinScheduler的多个GitHub仓库
    • 通过DSIP引入新功能是惟一的渠道
    • 提bug和修bug同样重要
    • PR越简单越好
    • https://github.com/apache/dolphinscheduler
    • https://github.com/apache/dolphinscheduler-website
    • https://github.com/apache/dolphinscheduler-operator
    • https://github.com/apache/dolphinscheduler-sdk-python
    • https://github.com/apache/dolphinscheduler
    • 注意事项:
      • 通过DSIP引入新功能是唯一的渠道
      • 汇报bug和修bug同样重要
      • PR越简单越好

结语

Apache DolphinScheduler 3.3.0版本带来了多项重要更新,增强了系统的稳定性、扩展性和易用性。我们鼓励社区成员积极参与,共同推动项目的发展。

嘉宾简介

  • 姓名:阮文俊
  • Title:Apache DolphinScheduler/SeaTunnel/EventMesh PMC 成员
  • GitHub:ruanwenjun
  • 就职经历:白鲸开源/eBay/拼多多
  • 专业领域:专注于分布式系统和微服务中间件

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

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

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

相关文章

Golang创建文件夹

方法 package zdpgo_fileimport ("os" )// AddDir 创建文件夹 func AddDir(dir string) error {if !IsExist(dir) {return os.MkdirAll(dir, os.ModePerm)}return nil }测试 package zdpgo_fileimport "testing"func TestAddDir(t *testing.T) {data : […

Baxter机器人摄像头打不开的一个可能的解决办法

操作过程 1.连上机器人 cd ros_ws/ ./baxter.sh2.查看摄像头(最多开两个) rosrun baxter_tools camera_control.py -l 3.打开指定的摄像头 rosrun baxter_tools camera_control.py -o left_hand_camera -r 1280x800 另:关闭的话 rosrun…

网络安全快速入门(十四)Linux输出重定向及通配符

14.1 前言 在我们了解网络之后,接下来我们来了解一下Linux的输出重定向及通配符,以便更快捷地去执行Linux的基础命令!话不多说,我们开始今天的学习内容吧。 14.2 输出重定向 输出重定向,本质上就是将本该显示在终端上…

04. Redis 配置文件

文章目录 单位包含网络 NETWORK通用 GENERAL快照 SNAPSHOTTING主从复制 REPLICATION安全 SECURITY客户端 CLIENTS内存设置 MEMORY MANAGEMENTAPPEND ONLY MODE 模式(aof 的配置) 单位 配置文件对大小写不敏感(unit单位)。 包含 …

数据库操作(函数)

函数是一段可以直接被另外一段程序调用的程序或代码 一。字符串函数 1.concat(s1,s1....sn):字符串拼接,将s1,s2,sn拼接为一个字符串 例如: select concat("hello","world"); 2.lower(str&…

java版本ERP管理系统源码 Spring Cloud ERP系统-生产型企业erp系

在当今数字化浪潮的推动下,企业对于高效、稳定且易于扩展的管理系统需求日益增长。为了满足这一需求,我们精心打造了一款基于Java技术的鸿鹄ERP(Enterprise Resource Planning)管理系统。该系统充分利用了Spring Cloud Alibaba、S…

《Effective Objective-C 2.0》读书笔记——对象、消息、运行期

目录 第二章:对象、消息、运行期第6条:理解“属性”这一概念第7条:在对象内部尽量直接访问实例变量第8条:理解“对象等同性”这一概念第9条:以“类族模式”隐藏实现细节第10条:在既有类中使用关联对象存放自…

推荐ChatGPT4.0——数学建模

1.建模助手 2. 可直接上传文档分析 3.获取途径 现在商家有活动,仅仅需要19.9!!!! 现在有优惠: 推荐人写:love 周卡,半月卡,月卡优惠码是love, 会优惠10元…

JAVA项目开发公共字段自动填充——省事

业务表中,有时候会有公共的字段需要反复的赋值,最常见的就是每次操作都会记录更新日期,更新人等。为了避免反复的赋值操作—— 我们可以用自定义注解加上自定义切面,还有反射来一次性设置多次使用。 1.首先自定义一个注解&#xf…

C++—数组

数组是由一批相同类型的元素&#xff08;element&#xff09;的集合所组成的数据结构&#xff0c;分配一块连续的内存来存储。 语法&#xff1a; <数据类型> <数组名>[<数组长度>]; 数据类型&#xff1a;数组内存放的数据类型&#xff0c;如int、char&…

暴雨为IBM发布《可信赖的企业级生成式 AI 白皮书》点赞

2024年 5月 23日&#xff0c;北京&#xff09;&#xff0c;IBM 在北京举行“AI for Business论坛”&#xff0c;与客户、合作伙伴、生态联盟等行业参与者一起&#xff0c;探讨如何将生成式 AI 应用到企业创新和实践当中。会上&#xff0c;中国开源软件推进联盟与 IBM 联合发布《…

LeetCode刷题之HOT100之比特位计数

今天把仙剑三看完了&#xff0c;茂茂割肉让人无法释怀&#xff0c;眼泪止不住的流。长卿和紫萱的分离似乎也意味着重逢&#xff0c;这就是他们的宿命吧。怅然若失的感觉席卷全身&#xff0c;哎&#xff0c;做题吧。 1、题目描述 2、逻辑分析 题目要求将整数从0到此元素&#…

【华为笔试题汇总】2024-05-22-华为春招笔试题-三语言题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新小米近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f49…

vue三级联动组件

背景 项目中经常出现三级下拉框组件的要求&#xff0c;这种组件其中一级发生变化&#xff0c;子级的组件就会发生变化如果这一个组件&#xff0c;单独作为搜索条件使用&#xff0c;很好写&#xff0c;同时作为搜索条件和form回写组件&#xff0c;回显就比较困难 子组件代码 将与…

2.搜索游戏中不可见的数据坐标

内容参考于&#xff1a; 易道云信息技术研究院VIP课 首先一般游戏在设计时会把人物相关的属性放到一起&#xff0c;在 1.搜索游戏中的数据与环境搭建 里也能证实&#xff0c;角色的等级、攻击力、生命值、经验等它们的内存地址都是相差4字节也就是用int类型存储的&#xff0c;…

简单的TCP网络程序:英译汉服务器

一、服务器的初始化 下面介绍程序中用到的socket API,这些函数都在sys/socket.h中。 1.创建套接字 socket()&#xff1a; ⭐参数介绍&#xff1a; socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符;应用程序可以像读写文件一样用read/write在网…

AIGC实践|探索用AI实现小游戏开发全流程

前言&#xff1a; 在上一篇中&#xff0c;我们已经深入探讨了AI工具在动态绘本创作中的应用&#xff0c;体验了AI在创意内容生成上的魅力。本篇文章将带领大家进入一个全新的探索领域——游戏开发。 本文将详细介绍如何利用AI工具探索实现游戏开发的全过程&#xff0c;从概念…

提升代码简洁,MVEL 表达式和责任链设计模式应用实践

导读 本文主要讲解了MVEL表达式和责任链设计模式相结合一起的消息处理解决方案设计、解耦消息处理节点以及方便代码维护扩展。通过“订单拆单消息”的接入作为具体实践案例&#xff0c;简要阐述了MVEL表达式和Apache Chain职责链设计模式应用场景。希望通过本文&#xff0c;读…

【C/C++笔试练习】TCP、IP广播、ARP协议、IP路由器、MAC协议、三次握手、TCP/IP、子网划分年、会抽奖、抄送列表

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;TCP&#xff08;2&#xff09;IP广播&#xff08;3&#xff09;ARP协议&#xff08;4&#xff09;IP路由器&#xff08;5&#xff09;MAC协议&#xff08;6&#xff09;三次握手&#xff08;7&#xff09;TCP/IP&#xf…

Vue 3入门指南

title: Vue 3入门指南 date: 2024/5/23 19:37:34 updated: 2024/5/23 19:37:34 categories: 前端开发 tags: 框架对比环境搭建基础语法组件开发响应式系统状态管理路由配置 第1章&#xff1a;Vue 3简介 1.1 Vue.js的历史与发展 Vue.js由前谷歌工程师尤雨溪&#xff08;Eva…