系统架构

1.架构图

image

2.系统架构图

image

3.架构说明

3.1 MasterServer

采用分布式务无中心的设计理念,MasterServer主要负责DAG任务切分,任务提交监控,同时监听其他MasterServer和WorkerServer状态
MasterServer服务启动时向zk注册临时节点,监听zk 的临时节点变化来进行容错处理,进行分布式
主要功能点

  • 分布是调度组件,定时任务的启停,quartz调度起任务后,Master会有线程池具体负责处理后续操作
  • MasterSchedulerThread 扫描线程,定时扫描库里的command表,根据不同的命令类型进行不同的业务操作
  • MasterExecThread 主要负责DAG任务的切分,任务提交监控
  • MasterTaskExecThread 主要负责任务的持久化

3.2 WorkerServer

分布式无中心的设计理念,WorkerServer主要负责任务的执行
WorkerServer也会向zk注册临时节点,保证高可用。
主要功能点

  • FetchTaskThread主要负责不断从Task Queue中领取任务,根据不同任务类型调用TaskScheduleThread对应执行器
  • LoggerServer是一个RPC服务,提供日志分片查看,刷新和下载功能

3.3 zk

提供zk集群,MasterServer和WorkerServer都向zk注册临时节点,高可用,进行集群的管理和容错
zk提供分布式锁功能,zk进行了事件的监听

3.4 Task Queue

任务队列的操作,目前队列也是基于zookeeper实现,

3.5 Alert

告警通知相关接口,告警的存储,查询,通知功能。

3.6 API

API接口层,处理UI请求,提供统一的RESTFUL API,接口包括工作流的创建,定义,查询,修改,发布,下线,上线,停止,启动。暂停,恢复

3.7 UI

系统的前端页面,提供各种可视化操作

4.架构设计思想

4.1 中心化思想

Master-Slave 主从架构

  • master负责任务分发并监督slave的健康状态,动态将任务均衡到slave上
  • worker的角色负责任务的执行工作并维护和master的心跳。master可以分配任务给slave
    存在的问题:
  • master出现问题,群龙无首,集群崩溃。一般都是主备Master设计方案,热备或者冷备,可以是自动切换或手动切换
  • Schedule在Master上,可以支持一个DAG中不同任务运行在不同的机器上,会产生master的过载。如果schedule在slave上,一个DAG中所有任务都只能再某一台机器上进行作业提交。

4.2 去中心化思想

没有maste、slave概念,角色一样,地位平等
不存在一个管理者的概念,没有单点故障。没有管理者,每个节点就需要和其他节点通信才能得到必要的机器信息
主要是动态中心化分布式系统,集群中的管理者是被动态选举出来的,非预制的。集群故障,自动选举出新的管理者
海豚调度中的去中心化是Master、worker注册到zk中,实现master和worker集群的无中心化,并使用zk分布式锁来选举其中一台master或worker为管理者来执行任务

posted @ 2023-07-05 11:17  SpecialSpeculator  阅读(100)  评论(0编辑  收藏  举报