- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Apache DolphinScheduler分布式易扩展的可视化DAG工作流调度系统
本次分享涵盖如下6个主题:
- Apache DolphinScheduler用户及社区现状
- Master/Slave架构
- 去中心化架构设计
- NIO框架Netty问世
- 容错设计
- 未来架构规划
展开查看详情
1 .Apache DolphinScheduler -分布式易扩展的可视化DAG工作流调度系统 本产品保密并受到版权法保护 Confidential and Protected by Copyright Laws
2 . 自我介绍 乔占卫( journey) 现任易观大数据平台技术专家,Apache DolphinScheduler PPMC。 DolphinScheduler核心开发者之一。经历 了DolphinScheduler从0到1的开发、开源及贡献给Apache孵化器的整个历程。 2020-7-28 数据驱动精益成长 2
3 . 目录 CONTENTS 01 用户及社区现状 02 Master/Slave架构 03 去中心化架构设计 04 NIO框架Netty问世 05 容错设计 06 未来架构规划 2020-7-28 数据驱动精益成长 3
4 . PART 1 用户及社区现状 2020-7-28 数据驱动精益成长 4
5 . DolphinScheduler 部分用户案例(排名不分先后) 2020-7-28 数据驱动精益成长 5
6 . DolphinScheduler 社区情况 易观 头条 阿里 腾讯 京东 滴滴 华为 平安 360 小米 陌陌 观远 多点 同程 中移动 趣加 荔枝 贡献者分布 2020-7-28 数据驱动精益成长 6
7 . PART 2 Master/Slave架构 2020-7-28 数据驱动精益成长 7
8 . 经典的Master/Slave架构 2020-7-28 数据驱动精益成长 8
9 . 经典Master/Slave架构的问题? 1,Master单点问题 ? 2,DAG切分在Master OR Slave ? 第一个问题:可以借鉴HDFS NameNode HA架构设计,引入 Zookeeper通过Active Master选举 第二个问题:如果DAG在Master切分,则一个流程是一个DAG,一 个DAG占用一个线程,单Master流程并发会有问题 如果DAG在Slave切分,则预示着一个DAG的所有的任务只能在一台 Slave上进行提交 声明:Master/Slave架构并不是不能解决这些问题,比如说Spark standalone,就是Master/Slave架构,一样有DAG的Stage划分, 架构过于复杂 2020-7-28 数据驱动精益成长 9
10 . PART 3 去中心化架构设计 2020-7-28 数据驱动精益成长 10
11 . 去中心化 去中心化,不是不要中心,而是由节点来自由选择中心、自由决定 中心。简单地说,中心化的意思,是中心决定节点。节点必须依赖 中心,节点离开了中心就无法生存。在去中心化系统中,任何人都 是一个节点,任何人也都可以成为一个中心。任何中心都不是永久 的,而是阶段性的,任何中心对节点都不具有强制性 比如 Eureka(Peer to Peer架构)、Zookeeper(Leader选举) 2020-7-28 数据驱动精益成长 11
12 . DolphinScheduler最初架构 2020-7-28 数据驱动精益成长 12
13 . 引入Zookeeper Zookeeper常用功能: 1,服务注册中心,临时节点 2,元数据管理,持久化节点 3,Watcher监听回调,Curator 4,分布式锁(Master选举) 2020-7-28 数据驱动精益成长 13
14 . 引入Zookeeper 2020-7-28 数据驱动精益成长 14
15 . 最初架构的问题? 优点: 1,Peer to Peer 架构 2,只有DB和Zookeeper的网络通信,基础架构稳定 缺点: 1,任务高延迟,Zookeeper作为Master/Worker通信队列,不适 合实时写 2,实时查询DB,数据库压力大 3,分布式锁,如果有较多的客户端频繁的申请加锁、释放锁,对于 ZK 集群的压力会比较大 2020-7-28 数据驱动精益成长 15
16 . PART 4 NIO框架Netty问世 2020-7-28 数据驱动精益成长 16
17 . Netty线程模型 优化点: Netty默认就是一个IO线程 无锁串行化处理各个客户端 的请求,处理完一个返回了 响应,再处理下一个请求 Processor线程中再加一层 Handler线程池。将Netty Server的两层线程模型修 改为三层线程模型 2020-7-28 数据驱动精益成长 17
18 . 1.3.x架构改进 2020-7-28 数据驱动精益成长 18
19 . 1.3.x 主流程活动图 2020-7-28 数据驱动精益成长 19
20 . PART 5 容错设计 2020-7-28 数据驱动精益成长 20
21 . Master容错 注意: Master容错就是容流程 DAG,让宕机MasterB上 的流程DAG转移到其他机 器上 2020-7-28 数据驱动精益成长 21
22 . Worker容错 注意: Worker容错主要是是kill任 务,任务在其他机器上重新 提交 2020-7-28 数据驱动精益成长 22
23 . PART 6 未来架构规划 2020-7-28 数据驱动精益成长 23
24 . Master线程模型 2020-7-28 数据驱动精益成长 24
25 . Api通信Master,Master/Worker通信Alert 注意: 1,Alert SPI插件化告警,正在做 2,Alert作为一个服务,Master需要告警,调用 Alert服务,可选择消息直接发送过去,或者比如 说要发送数据量的信息,预将信息放到一个共享存 储位置,比如说HDFS,然后Alert模块再根据存储 数据路径告警 2020-7-28 数据驱动精益成长 25
26 . 容错 Zookeeper 在工程实践的过程中经常会发生的一个现象就是 Zookeeper 客户端”假死”,所谓的”假死”是指如果 Zookeeper 客户端机器负载过高或者正在进行 JVM Full GC, 那么可能会导致 Zookeeper 客户端到 Zookeeper 服务端的心 跳不能正常发出,一旦这个时间持续较长,超过了配置的 Zookeeper Session Timeout 参数的话,Zookeeper 服务端就 会认为客户端的 session 已经过期从而将客户端的 Session 关 闭。”假死”有可能引起分布式系统常说的双主或脑裂 (brain- split) 现象。 2020-7-28 数据驱动精益成长 26