- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
DolphinScheduler与容器化的融合
DolphinScheduler与容器化的融合
展开查看详情
1 .DolphinScheduler与容器 化的融合 刘小春 趣加游戏 & Committer
2 .自我介绍 刘小春 现就职于趣加游戏 资深研发工程师 • 华为 CDN&NAS • 百度 百度地图&百度外卖 liuxiaochun.cn khadgar.mage@gmail.com
3 .目录 • 我与DolphinScheduler的故事 • 架构一览 • 部署的简化 • CI/CD
4 .我与DolphinScheduler的故事
5 .缘起 哎呦,不错哦
6 .贡献官网
7 .贡献CI(github action)
8 .贡献其他 •BUG修复 •ISSUE回答 •微信群问题解答 •问题讨论
9 .架构一览
10 .部署时涉及到的服务 Master Server: DAG任务切分的调度器 Worker Server: 执行执行 Log Server: Task 日志查询 Alert Server: 告警 API Server: Rest Api Server Nginx + UI: 前端 Zookeeper: 锁/队列/集群管理 DB: 数据存储
11 .部署的简化
12 .梯度部署 • Mini DS 学习、调研、业务简单刚起步 • Node DS Cloud DS 业务增长较快,相对复杂,可靠性要求 • Cloud DS Node DS Mini DS 业务复杂、可靠性、成本、对k8s熟悉
13 .Mini DS 外部依赖DB 单节点单进程部署 单节点docker-compose部署 PROCESS CONTAINER UI Alert Master API Server Master Worker Zookeeper API Log Worker Bins/Libs Bins/Libs Bins/Libs Bins/Libs Bins/Libs Docker Node OS Node OS • 一个进程 • docker-compose管理所有container • 去掉Nginx,由进程本身承担WebServer的功能 • API Server合并原API Server + UI + Alert • 由本地线程承担zookeeper队列和锁的功能 • Master=原Master • Worker合并Worker + Log • 每个服务都独立部署
14 .Mini DS 架构要求: zk组件和webserver可替换 • zookeeper抽象, 可用etcd, 线程去实现锁和队列的功能 • Webserver可以选择 jetty 替换 nginx 不足: • 单点,可靠性无法保证 • 处理业务能力有限
15 .Node DS Node DB HAProxy Node Worker API Server Master Node Worker Node API Server Node API Server UI Master Worker Alert Server Zookeeper Cluster Log Server Master Worker
16 .Node DS 架构要求 • 增加配置中心管理, 支持UI进行配置管理,热更到各个Node 不足 • 任务的Log是存储在本地Node节点上的,如果节点挂掉,无法查看Log • 不能动态伸缩,对运维的要求高
17 .Cloud DS POD自动扩缩容 Node A Node B Node C Node X Pod Pod Pod Pod API Server API Server Worker Worker … Pod Pod Pod Pod Master Worker Master Worker Pod Pod Pod Pod Zookeeper Zookeeper Zookeeper Master DB 持久卷(NAS) or hbase
18 .Cloud DS 架构要求 • 任务Log需要持久化共享存储,Log存储抽象存Hbase or Filesystem • Graceful shutdown, 尽量降低对业务影响 缺点 • K8S的运维经验 优点 • 动态伸缩,节省资源 • 本身的维护成本低
19 .Cloud DS 作为云厂商的服务,不需要部署,按照实际使用资源结算
20 .CI/CD
21 .Build视图 • 一致的运行环境(dev/test/prod) • Build once, run everywhere • 两种Trigger Build Pipeline • 一个完整的闭环
22 .质量视图 PR/MR场景: • 非阻塞,快速发现问题 • 基础的E2E Test Case • 不包含Performance Test Case • 根据代码(前后端)触发不同的Case Backend Frontend Nightly场景: • 全部的E2E Case • Performance Test Case Backend Frontend
23 .Thanks