引言

来自 eBay 的文俊同学在近期的上海开源大数据 Meetup 上做了十分精彩的 “Apache DolphinScheduler 的架构演进” 分享。本次分享有近 200 人参与,在线观看次数超过 2,500 次

图为现场

分享视频请参见

Apache DolphinScheduler 介绍

Apache DolphinScheduler 是一个云原生的分布式去中心化,易扩展的可视化 DAG 工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。DolphinScheduler 以有向无环图的方式将任务连接起来,可实时监控任务的运行状态,同时支持取消、暂停、恢复、从指定任务节点重跑等操作。

DolphinScheduler 具有以下几个优良功能特性:

  • Cloud Native — 支持多云/数据中心工作流管理,也支持 Kubernetes、Docker 部署和自定义任务类型,分布式调度,整体调度能力随集群规模线性增长

  • 高可靠与高可扩展性 — 去中心化的多 Master 多 Worker 设计架构,支持服务动态上下线,自我容错与调节能力

  • 支持多租户

  • 丰富的使用场景 — 包括流、暂停、恢复操作,以及额外的任务类型,如 Spark、Hive、MR、Shell、Python、Flink 以及 DS 独有的子工作流、任务依赖设计,扩展点采用插件化的实现方式

  • 简单易用 — 所有流程定义操作可视化编排,定义关键信息一目了然,一键部署

关于 DolphinSheduler 更多功能介绍和开发文档请查阅官网详细信息 https://dolphinscheduler.apache.org/zh-cn/。

架构演进过程

1.2.x 架构

DolphinScheduler 最初进入 Apache 孵化器的版本是 1.2,在这一版本中采用的架构由以下几个重要部分组成:

  • 去中心化的 master 节点,负责工作流调度、DAG 任务切分、任务提交监控和监听其它节点健康状态等任务

  • 去中心化的 worker 节点,负责执行任务和维护任务的生命周期等

  • 数据库,存储工作流元数据,运行实例数据

  • Zookeeper,主要负责注册中心、分布式锁、任务队列等工作任务

1.2 版本基本实现了高可靠的工作流调度系统,但是也存在多个问题:

  • 重量级的 worker,worker 节点需要负责多种任务

  • 异步派发任务会导致任务执行延迟

  • 由于 masker 和 worker 都需要依赖数据库,导致数据库压力大

1.3.x 架构

针对 1.2 版本存在的问题,1.3 架构进行了如下改进:

  • 去任务队列,保证 master 节点同步派发任务,降低任务执行延迟

  • 轻量级 worker,worker 节点只负责执行任务,单一化 worker 职责

  • 减小数据库压力,worker 不再连接数据库

  • 采用多任务负载均衡策略,master 根据 worker 节点资源使用情况分配任务,提高 worker 资源利用率

这些改进有效改进了 1.2 版本的缺陷,但仍存在一些问题,例如:

  • master 调度工作流时需要依赖分布式锁,导致工作流吞吐量难以提升

  • 因为需要创建大量线程池,多数线程处于轮询数据库,导致 master 资源利用率低

  • master 轮询数据库,仍然导致数据库压力大

  • 各组件存在耦合情况

2.0 架构

针对 1.3 版本的缺陷,2.0 架构进一步做出以下改进:

  • 去分布式锁,对 master 进行分区编号,实现错位查询数据库,避免多个节点同时访问同一个工作流造成的冲突问题

  • 重构 master 线程模型,对所有工作流使用统一的线程池

  • 重构数据库中 DAG 元数据模型

  • 彻底的插件化,所有扩展点都采用插件化实现

  • 数据血缘关系分析

1 去分布式锁  

2 重构 master 中的线程模型

  • SchedulerThread 负责从数据库中查询 Command 并提交到 Command Queue

  • DagExecuteThreadPool 从 Command Queue 中取 command,并构造 DAG实例添加到 DAG 队列,进行处理,当前 DAG 没有未执行的任务,则当前 DAG 执行结束

  • TaskExecuteThreadPool 提交任务给 Worker

  • TaskEventThread 监听任务事件队列,修改任务状态

3 彻底的插件化

所有扩展点都采用插件化实现

  • 告警SPI

  • 注册中心SPI

  • 资源存储SPI

  • 任务插件SPI

  • 数据源SPI

  • ……

Apache DolphinScheduler 发展方向

文俊针对 DolphinScheduler 的未来发展方向,也分享了一些看法:

  • 系统更稳、速度更快(高吞吐、低延迟、智能化运维、高可用)

  • 支持更多的任务集成(深度学习任务、CI/CD等其它系统集成、存储过程和数据质量任务、容器调度任务、复杂调度场景等)

  • 轻量化 DolphinScheduler 内核,提供基础调度服务

如何参与开源贡献

最后,开发者阮文俊针对入门新手如何参与开源贡献的问题,提出了宝贵的指导意见:

  • 从小事做起,积累开发经验

  • 关注社区动态,积极参与讨论,更好融入社区

  • 坚持开源精神,乐于帮助他人

  • 保持持之以恒的开发和贡献心态

分享讲师:阮文俊,eBay 开发工程师,DolphinScheduler 深度贡献者,开源深度玩家

编辑:徐玮毅,天津大学 2018 级计算机科学与技术本科生,热爱编程,开拓进取。本文是第一次参与 DolphinScheduler 社区的开源工作,希望能逐渐积累经验,继续为社区作出更大贡献!

点击阅读原文,加入官方 Slack 讨论群 也欢迎关注推特: https://twitter.com/DolphinSchedule

Apache DolphinScheduler 架构演进介绍及开源经验分享 - eBay 阮文俊相关推荐

  1. 新一代大数据任务调度 - Apache DolphinScheduler喜提十大开源新锐项目 最具人气项目

    经 10000+ 开发者公开票选,20+专家评审. 10+ 主编团打分,历经数月打磨,11 月 19 日,由InfoQ 发起并组织的[2020中国技术力量年度榜单评选]结果正式揭晓. 2020 年度十 ...

  2. 微众银行数据库架构演进及 TiDB 实践经验

    作者介绍: 胡盼盼,微众银行数据平台室室经理.硕士毕业于华中科技大学,毕业后加入腾讯,任高级工程师,从事分布式存储与云数据库相关的研发与运营工作:2014 年加入微众银行,负责微众银行的数据库平台的建 ...

  3. 开源经验分享 | 如何从一名小白成为Apache Hudi Contributor

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站:https://www.captainai.net/dongkelun 前言 参与Apache Hud ...

  4. php和apache协同,apache和php之间协同工作的配置经验分享

    php在当今一个不陌生的网络技术名词,想到网站或者web可能大多数开发者都会想到php,一个既免费又开源,既容易又实用等一些好处才拥有了世界上很多IT技术人员的青睐,我是一名JAVA开发者,接触PHP ...

  5. dubbo学习过程、使用经验分享及实现原理简单介绍,dubbo经验分享

    原文出处http://blog.csdn.net/hzzhoushaoyu/article/details/43273099 一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo ...

  6. 讲师征集令 | Apache DolphinScheduler Meetup分享嘉宾,期待你的议题和声音!

    Apache DolphinScheduler 社区线上 Meetup 讲师&议题正式对外征集啦!在全球疫情的笼罩下,我们的线上技术沙龙活动一直在紧锣密鼓的筹备举办,在此我们诚心向社区广大用户 ...

  7. 名额已排到10月 | Apache DolphinScheduler Meetup分享嘉宾继续火热招募中~

    自从Apache DolphinScheduler 社区线上 Meetup 讲师&议题正式对外公开征集以来!后台有很多用户踊跃报名,目前已经排到了10月份,为了更好匹配每场Meetup的主题, ...

  8. 议题征集令 | Apache DolphinScheduler Meetup 2021 来啦,议题征集正式开启!

    点击上方 蓝字关注我们 社区的小伙伴们,经过精心筹备,我们很高兴地宣布,Apache DolphinScheduler Meetup 2021 将于 2021 年 11 月 27 日到来! 在 Mee ...

  9. 从 Airflow 到 Apache DolphinScheduler,有赞大数据开发平台的调度系统演进

    点击上方 蓝字关注我们 作者 | 宋哲琦 ✎ 编 者 按 在不久前的 Apache  DolphinScheduler Meetup 2021 上,有赞大数据开发平台负责人 宋哲琦 带来了平台调度系统 ...

  10. 开源大数据:Apache DolphinScheduler

    Apache DolphinScheduler 分布式易扩展的可视化DAG工作流任务调度系统 Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统 ...

最新文章

  1. SQL、Linq和Lambda表达式 的关系
  2. unicode字符显示方框_【硬核】韦东山:字符的编码方式
  3. 操作系统二:计算机内存体系
  4. java中高级大公司多线程面试题
  5. SAP UI5库对浏览器类型检测的实现
  6. php 后门代码_分析一段PHP的后门代码,很恶心
  7. 制作程序化装饰花纹图案_装饰图案
  8. linux常用命令:touch 命令
  9. 《DBNotes: Buffer Pool对于缓冲页的链表式管理》
  10. 详解nullable、firstpos、lastpos和followpos的计算规则
  11. 设计模式C++实现--Decorator模式
  12. 神经网络及其在点云中的应用
  13. 一键领取php,新款引流必备一键领取名片赞PHP单页源码
  14. Android 启动系统相机,相册,裁剪图片及6.0权限管理
  15. 【java并发编程实践】源码
  16. JAVA String时间转化为数据库Date类型
  17. 数据库原理及应用学习笔记
  18. SpringBoot+libreoffice+jquery.media.js实现office文档在线预览
  19. 算法提高 分解质因数
  20. python代码生成词云图

热门文章

  1. 我所遇到 adb devices offline 的解决之道
  2. Flutter悬浮UI的设计Overlay组件
  3. 【DevCloud · 敏捷智库】暴走在发布前夜的开发,你怕不怕?
  4. SSM工程搭建与CURD
  5. matlab更新64位api,升级 MEX 文件以使用 64 位 API
  6. STM32F4定时器CH3和CH4通道进行PWM捕获问题
  7. NeRF系列(1):NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 论文解读与公式推导(一)
  8. 用户,组的查看应用。权限管理
  9. android 自定义下拉刷新动画,Android自定义渐变式炫酷ListView下拉刷新动画
  10. 腾讯云网站备案咨询解答:其他问题解答汇总