热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Dolphinscheduler源码分析容错篇

DS调度是分布式部署,实现调度和运行隔离,设计了master和workermaster负责拆分DAG,监控任务状态,根据依赖条件,提交任务实例。worker负责接收任务消息,执行任

DS调度是分布式部署,实现调度和运行隔离,设计了master和worker

  • master负责拆分DAG,监控任务状态,根据依赖条件,提交任务实例。

  • worker负责接收任务消息,执行任务,并将任务执行结果反馈给master。为了实现系统的高可用,设计了master容错和worker容错。

Master/Worker服务容错

master/worker服务通过注册zookeeper临时节点,通过心跳连接来确保其活跃性。一旦master/worker服务挂掉或者网络异常原因,服务会失去zk的连接,触发临时节点的REMOVED事件,这个时候就可以对服务进行容错了。

master容错流程

1.1 . 容错发生

当masterB由于某些原因(ZK连接超时/进程挂掉)不能继续和zk进行心跳通信

  • masterB在zk中的临时节点就会被remove
  • masterA/workerA收到masterB的remove事件
  • 首先将masterB加入到zk的已死队列里(假如masterB进程还在,如果超时重连,检测到已经被其他master/worker判定为已死,就会自动退出进程)
  • 然后将所有masterB正在执行的流程host置为NULL
  • 再向数据库提交一个”恢复容错“消息
  • 由其他master来接手这些流程

1.2 容错执行

当masterC拿到一个恢复容错消息,会遍历此流程的任务,重新监控执行中的任务,提交未执行的任务,达到平滑容错的效果

worker容错

2.1 容错发生

其他任何masterB/workerB收到workerA的remove事件,首先将workerA加入到zk的已死队列里(假如workerA进程还在,如果超时重连,检测到已经被其他master/worker判定为已死,就会自动退出进程),然后找到workerA上正在执行的任务,先kill正在执行的任务(目前只有yarn任务会被kill),然后修改任务状态为”需要容错“

2.2 容错执行

master负责监控任务状态,发现任务状态为”需要容错“,会提交一个新的任务实例,由其他的worker去执行,原来的任务只是作为一个历史记录存在。

Master/Worker服务启动容错

还有一种情况是以上容错机制处理不了的,某天深夜,所有的服务因为网络原因全挂了,运维收到消息,半夜从床上爬起来,一行命令把服务重启起来,刚躺下要继续睡,突然想到,还有几百个工作流正在跑着,只能无奈爬起来,通宵达旦地手动处理这些工作流。这种情况就要求系统有启动容错的能力,只需要一行命令启动服务就可以自动继续所有的工作流。

3.1 master容错

同2.1容错流程,不同的是,启动容错会找到所有未执行完的流程,并向数据库提交”恢复容错“消息

3.2 worker容错

同2.1流程,不同的是,启动容错会找到所有未执行完成的任务,将其状态置为”需要容错“。

结束语

DS目前的容错机制基本上可以保证工作流不丢失,任务不被阻塞。同时也有一些缺陷,比如worker容错中可能会出现重复执行任务的情况,这种情况就需要业务上确保幂等。


推荐阅读
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Java开发实战讲解!字节跳动三场技术面+HR面
    二、回顾整理阿里面试题基本就这样了,还有一些零星的问题想不起来了,答案也整理出来了。自我介绍JVM如何加载一个类的过程,双亲委派模型中有 ... [详细]
  • Hadoop之Yarn
    目录1Hadoop1.x和Hadoop2.x架构区别2Yarn概述3Yarn基本架构4Yarn工作机制5作业提交全过程6资源调度器7任务的推测执行1Hadoop1.x和Hadoo ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
  • python zookeeeper 学习和操作
    1.zookeeeper介绍ZooKeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的 ... [详细]
  • Zookeeper为分布式环境提供灵活的协调基础架构。ZooKeeper框架支持许多当今最好的工业应用程序。我们将在本章中讨论ZooKeeper的一些最显着的应用。雅虎ZooKee ... [详细]
  • Zookeeper 总结与面试题汇总
    Zookeeper总结与面试题汇总,Go语言社区,Golang程序员人脉社 ... [详细]
  • Yarn已过时!Kubeflow实现机器学习调度平台才是未来
    来源:AI前线本文约6700字,建议阅读10分钟。本文分析了建设分布式训练平台的过程中的痛点所在,为你介绍Kubeflow与其核心组件及其 ... [详细]
  • HadoopYARN集群是一个通用的资源管理平台,可为各类计算框架提供资源的管理和调度。其核心是通过一个全局的资源管理器来实现分离资源管理与作业调度监控。Hadoop ... [详细]
  • 分库分表  ShardingJDBC (详解 1/6)
    狂创客圈经典图书:《NettyZookeeperRedis高并发实战》面试必备+面试必备+面试必备【博客园总入口】疯狂创客圈经典图书:《SpringCloud、Nginx高并发核心 ... [详细]
author-avatar
Tony_Friday
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有