DolphinScheduler 3.3.0版本更新一览

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.mzph.cn/news/843367.shtml

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

相关文章

四川古力未来科技抖音小店安全靠谱,购物新体验

在数字化浪潮席卷而来的今天,电商行业蓬勃发展,各种线上购物平台如雨后春笋般涌现。其中,抖音小店凭借其独特的短视频直播购物模式,迅速赢得了广大消费者的青睐。而四川古力未来科技抖音小店,更是以其安全靠谱、品质保…

ARM鲲鹏920-oe2309-caffe

参考链接:Caffe | Installation 安装依赖包 dnf install dnf update dnf install leveldb-devel snappy-devel opencv.aarch64 boost-devel hdf5-devel gflags-devel glog-devel lmdb-devel openblas.aarch64 dnf install git wget tar gcc-g unzip automake libtool autoco…

网工内推 | 高校、外企网工,IE认证优先,年薪最高18w

01 上海外国语大学贤达经济人文学院 🔷招聘岗位:高校网络主管 🔷职责描述: 1、负责总机房、网络规划及管理,包括容量规划、成本评估、建设管理等; 2、负责设计、实施及维护全网络架构及规划网络变更计划 3、负责网络功…

VMware ESXi 兼容性查询

官网兼容性查询地址:https://www.vmware.com/resources/compatibility/search.php

优选免单:重塑电商销售模式的新策略

随着电商行业的不断发展,一种名为“优选免单”的新兴销售模式正逐渐崭露头角。该模式以独特的价格策略、创新的奖励机制和巧妙的社交网络应用为核心,成功激发了消费者的购买热情,并实现了销售的高速增长。 一、规范运营,避免潜在风…

【网络协议】应用层协议HTTPS

文章目录 为什么引入HTTPS?基本概念加密的基本过程对称加密非对称加密中间人攻击证书 为什么引入HTTPS? 由于HTTP协议在网络传输中是明文传输的,那么当传输一些机密的文件或着对钱的操作时,就会有泄密的风险,从而引入…

【进程空间】通过页表寻址的过程

文章目录 前言介绍页表、页框、页目录的概念页框页表页目录页表和页目录的分配 一级页表和二级页表一级页表寻址过程 二级页表寻址过程 一级页表和二级页表的对比 前言 我们知道每个进程都有属于自己的虚拟地址空间,且每个进程的虚拟地址都是统一的。要想通过虚拟地…

数据结构(七)递归、快速排序

文章目录 一、递归(一)使用递归实现1~n求和1. 代码实现:2. 调用过程:3. 输出结果: (二)青蛙跳台阶问题1. 问题分析2. 代码实现3. 输出结果4. 代码效率优化5. 优化后的输出结果 二、快速排序&…

Euler 欧拉系统介绍

Euler 欧拉系统介绍 1 简介重要节点与版本EulerOS 特色EulerOS 与 openEuler 区别联系Euler 与 HarmonyOS 区别联系 2 openEuler特色支持 ARM,x86,RISC-V 等全部主流通用计算架构融入 AI 生态嵌入式实时能力提升引入 OpenHarmony 一些突出功能 参考 1 简…

将 KNX 接入 Home Assistant 之二 准备软件

写在前面: 在KNX官网也有关于 Home Assistant 的教程,地址是 Get started with Home Assistant x KNX 需要的东西是 a KNX IP Interface or Routera Raspberry Pian SD Card at least 32 GB 安装 Home Assistant 系统 下载镜像: 地址&…

idea中git检出失败

之前clone好好的,今天突然就拉取不下来了。很多时候是用户凭证的信息没更新的问题。由于window对同一个地址都存储了会话。如果是新的会话,必须要更新window下的凭证。 然后根据你的仓库找到你对应的账户,更新信息即可。

反射器和联邦实验

拓扑 要求 IP配置 [R1-GigabitEthernet0/0/0]ip add 12.0.0.1 24 [R1-LoopBack0]ip add 192.168.1.1 24 [R1-LoopBack1]ip add 10.0.0.1 24[R2-GigabitEthernet0/0/0]ip add 12.0.0.2 24 [R2-GigabitEthernet0/0/1]ip add 172.16.0.1 21 [R2-GigabitEthernet0/0/2]ip add 17…

(IDEA修改Java版本)java: 警告: 源发行版 X 需要目标发行版 X

搜索关键词:一致、发行 错误信息 其他错误: java: 错误: 不支持发行版本 6 java: -source 1.5 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式) 思路 有两个地方要检查,JDK版本保持一致即可。 比如统一用JDK8或…

FM1800隧道广播插播控制器

隧道广播插播控制器是一款群载波&应急广播插播控制器采用SDR软件无线电技术,产生独立的插播信号与“群载波”信号,本设备可通过软件无线电技术将音频信号调制成调频载波或“群载波”信号,分别送入插播主机,实现隧道广播远端机…

20240528解决飞凌的OK3588-C的核心板可以刷机不能连接ADB的问题

20240528解决飞凌的OK3588-C的核心板可以刷机不能连接ADB的问题 2024/5/28 16:34 OS:Linux R4/Buildroot 硬件接了3条线出来,一直可以刷机,但是链接ADB异常。 【总是链接不上】 Z:\OK3588_Linux_fs\kernel\arch\arm64\boot\dts\rockchip\OK3…

Android11 事件分发流程

在Android 11 输入系统之InputDispatcher和应用窗口建立联系一文中介绍到,当InputDispatcher写入数据后,客户端这边就会调用handleEvent方法接收数据 //frameworks\base\core\jni\android_view_InputEventReceiver.cpp int NativeInputEventReceiver::h…

炒黄金怎么追单?-融知财经网

在黄金投资领域,当市场行情呈现出有利的走势时,许多交易者会选择追加下单以扩大盈利。追单作为一种投资策略,旨在利用市场波动获取额外收益。然而,要想在追单中取得成功,需要掌握一定的技巧和策略。融知财经网给介绍黄金交易中追单的一些关键技巧,帮助投资者理智追单,稳健获利。…

线性插值的频域特性

1、抽取和插值的简单说明 抽取和插值是变采样过程中常用的两种手段,其中抽取的目的是降低数据的采样率,以降低对系统存储深度或计算量的要求。插值的目的是提高数据的采样率,以提高系统的计算精度。 M M M倍抽取通常是通过每隔 M M M…

Docker安装Nginx 并实现通过nginx部署静态网址

Docker镜像就是一个只读的模板,可以用来创建Docker容器。 例如:一个镜像可以包含一个完整的centos操作系统环境,里面仅安装了mysql、nginx等或用户需要的其他应用程序。 Docker提供了一个非常简单的机制来创建镜像或者更新现有的镜像&#…

GTD时间管理法

Part 1. What is GTD? | 什么是GTD? GTD is a framework that enhances focus and productivity. Through techniques such as capturing all tasks in a trusted system and breaking down complex projects into actionable items, GTD allows individuals to co…