首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于DAG的分布式任务调度平台-Maat

背景什么是MaatMaat是一个基于开源项目Airflow的流程调度系统,它支持用户自定义地组装流程节点,流程可以在用户指定的时间触发(支持crontab格式),或由用户手动触发。Maat的所有节点分布式地运行在Hippo上,由Drogo调度。用户可以创建自己的调度节点和执行节点,达到资源隔离的目的。用户可以通过配置的方式安装自己执行节点的运行环境,也可以配置执行节点的副本数。

为什么要做Maat我们在项目的开发过程中,经常遇到一些流程化调度的需求,如上线发布流程、分析任务流程等。

经过一段时间的调研,我们选用Airflow作为我们的原型开发一套分布式任务调度系统,它的功能全面,基本满足业务需求,在功能上扩展相对方便,外部依赖较少,和搜索生态对接相对容易。

业务层任何流程式调度及定时触发的需求均可以通过maat创建应用,maat提供了可视化编辑页面及丰富的api,用户可以方便地创建编辑流程模板,设置复杂的分支逻辑,maat会在调度时按照运行时的状态决定流程的流转路径。

模板管理在任务流程调度的场景中,常见的情况是:不同任务执行的流程基本一致,只有个别参数不同。因此Maat提出了基于模板管理的任务流程,用户在模板管理中定义一个流程的运行模板,对于其中未确定的部分用变量表示。当生成具体任务时,由具体变量和模板渲染出具体的任务。当模板修改时,可以将模板生效到所有依赖该模板的任务。

模板管理预设了集中任务节点,用户可以自由选择不同的任务节点组装模板流程。应用管理管理所有具体的流程调度任务,包括任务使用的模板、变量的值、报警信息、任务触发crontab等,用户在通过模板创建应用后,后续可以通过应用管理继续维护任务的运行。队列管理由于Maat上运行的任务所属应用各不相同,不同应用运行环境也不相同,另外不同应用也希望达到集群隔离的目的。

由于原生airflow的一些节点是有状态的,需要依赖本地一些文件,机器迁移会导致这些节点的状态丢失,我们对maat做了一些修改,保证机器迁移不会丢失运行状态:之前的调度依赖本地Pythondag文件,机器迁移导致本地文件丢失。我们做了修改,所有dag保存在db,依赖db中保存的信息调度,保证机器迁移后,dag信息也不会丢失。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180711A04TG500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券