DolphinScheduler 源码剖析之 Master 容错处理流程
点击上方蓝字关注 Apache DolphinScheduler
Apache DolphinScheduler(incubating),简称”DS”, 中文名 “海豚调度”(海豚聪明、人性化,又左右脑可互相换班,终生不用睡觉)。DolphinScheduler 正在像它的名字一样,努力成为一个“开箱即用”的灵活易用的大数据任务调度系统。
官网地址:https://dolphinscheduler.apache.org/
今天给大家带来的分享是 DolphinScheduler 源码剖析之 Master 容错处理流程
Master 容错流程是这样的:
1. 当 ZooKeeper 监听到有 Master 节点挂了,就会去通知其他 Master 进行容错
2. 收到通知的 Master 会通过分布式锁去“抢”到容错的操作,拿到锁的 Master 开始进行容错处理
3.容错的流程如下:
3.1 通过已下线的Master的地址和正在运行的工作流状态数组获取需要容错的ProcessInstance列表,
3.2 遍历列表对每个工作流进行处理:
3.2.1 将工作流的Host(也就是由哪个Master负责调度)置为空,更新到数据库里面
3.2.2 构造RECOVER_TOLERANCE_FAULT_PROCESS类型的Command插入到Command表中
Master 调度工作流的基础流程:
在 MasterSchedulerService 这个线程里面会尝试获取分布式锁,拿到锁以后会去数据库里面拿到一条 Command 去执行,如果容错 Command 成功插入到表里了就会在后面的操作中被任意一个 Master 拿到并进行处理。
以上就是我对 DolphinScheduler 的 Master 容错处理的分析,欢迎大家指正
预告
为了更好的可扩展性和性能,DolphinScheduler 的重构讨论将于下周五晚19:00 开始,欢迎感兴趣的伙伴参与
您知道么?
参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括文档、翻译、答疑、测试、代码、布道等,并且社区将文档贡献放在第一位,此外也极其欢迎各种实践文章,DolphinScheduler开源社区非常期待您的参与。
贡献第一个PR(文档、代码) 我们也希望是简单的,试想如果是一个新人一上来就贡献1个改了几十个文件的 PR 将会对参与 review 的伙伴的心理造成多大的摧残,????
文档github地址:https://github.com/apache/incubator-dolphinscheduler-website
当然如果您酷爱coding,社区也是非常欢迎“show me the code"的。
戳原文,立刻奔向
DolphinScheduler 的 github 仓库一起玩耍,来个 star 先收藏也是好的~