怎么做大数据工作流调度系统?大厂架构师一语点破!
副标题[/!--empirenews.page--]
编者说:文章介绍了EasyScheduler的架构设计,以及每个组件工作的方式。如果你的工作中遇到需要大数据工作流的场景可以尝试使用这个架构。由于文章比较长建议先收藏再阅读。 Easy Scheduler 大数据工作流调度系统已经开源,下载地址:https://github.com/analysys/ 在对调度系统架构说明之前,我们先来认识一下调度系统常用的名词。 名词解释
![]()
系统架构 架构说明 MasterServer MasterServer采用分布式无中心设计理念,MasterServer主要负责DAG 任务切分、任务提交监控,并同时监听其它MasterServer和WorkerServer的健康状态。MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeeper临时节点变化来进行容错处理。 该服务内主要包含:
WorkerServer WorkerServer也采用分布式无中心设计理念,WorkerServer主要负责任务的执行和提供日志服务。WorkerServer服务启动时向Zookeeper注册临时节点,并维持心跳。 该服务包含:
ZooKeeper ZooKeeper服务,系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进行集群管理和容错。另外系统还基于ZooKeeper进行事件监听和分布式锁。我们也曾经基于Redis实现过队列,不过我们希望EasyScheduler依赖到的组件尽量地少,所以最后还是去掉了Redis实现。 Task Queue 提供任务队列的操作,目前队列也是基于Zookeeper来实现。由于队列中存的信息较少,不必担心队列里数据过多的情况,实际上我们压测过百万级数据存队列,对系统稳定性和性能没影响。 Alert 提供告警相关接口,接口主要包括 告警 两种类型的告警数据的存储、查询和通知功能。其中通知功能又有 邮件通知 和**SNMP(暂未实现)**两种。 API API接口层,主要负责处理前端UI层的请求。该服务统一提供RESTful api向外部提供请求服务。接口包括工作流的创建、定义、查询、修改、发布、下线、手工启动、停止、暂停、恢复、从该节点开始执行等等。 UI 系统的前端页面,提供系统的各种可视化操作界面,详见**系统使用手册**部分。
中心化的设计理念比较简单,分布式集群中的节点按照角色分工,大体上分为两种角色: Master的角色主要负责任务分发并监督Slave的健康状态,可以动态的将任务均衡到Slave上,以致Slave节点不至于“忙死”或”闲死”的状态。 Worker的角色主要负责任务的执行工作并维护和Master的心跳,以便Master可以分配任务给Slave。 中心化思想设计存在的问题:
(编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |