系统架构
1.架构图
2.系统架构图
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为管理者来执行任务
原创:做时间的朋友