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拿到一个恢复容错消息,会遍历此流程的任务,重新监控执行中的任务&#