美文网首页
Dispather - 任务调度系统方案设计

Dispather - 任务调度系统方案设计

作者: 红薯爱帅 | 来源:发表于2023-03-16 18:45 被阅读0次

1. 概述

计算平台的一个核心功能,是任务调度,包含任务之间的依赖处理、任务之间传参、任务的执行等。

本文重点分析和介绍任务调度的需求总结、数据库设计与架构设计。

2. 需求总结

2.1. 术语介绍

术语

  • Pipeline,即管线,这里指实际的药物研发管线,例如plk1、zinc
  • Job,或Workflow,即任务流,是一系列Task的有向无环图,包含所属Pipeline、创建人、描述、定时配置、hook、最大运行实例数等
  • Task,即任务,是执行某一个特定任务的参数集合,包含任务类型、任务配置、任务输入、任务输出等
  • Job Instance,指任务流实例。每运行一次Job,则产生一个Job Instance
  • Task Instance,指任务实例。每运行一次Task,则产生一个Task Instance

实体之间关系

  • Pipeline -> Job, 1 -> n
  • Job -> Task, 1 -> n
  • Job -> Job Instance, 1 -> n
  • Task -> Task Instance, 1 -> n
  • Job Instance -> Task Instance, 1 -> n

实体的操作

  • 对于Pipeline,支持修改、增加、删除(没有其相关联的Job时)、废弃、完结
  • 对于Job,支持修改、增加、删除(将删除其相关联的所有Job Instance)、锁定(锁定后不能修改其配置)、解锁、克隆
  • 对于Job Instance,支持暂停、启动、终止、重试
  • 对于Task Instance,支持强制终止

2.2. 需求与功能描述

2.2.1. Job的运行方法支持多种

  • a.【完整Job】自动运行,由定时器触发,例如每天晚上11点开始
  • b.【完整Job】手动运行,由用户手动触发,例如web ui或api触发
  • c.【部分Job】手动运行单个Task,不包含该Task的下游Task
  • d.【部分Job】手动运行单个Task,包含该Task的下游Task

方法c和d,需要考虑起始Task任务输入
可以默认其前置Task最近一次Task Instance任务输出
也可以将其前置Task所有Task Instance任务输出按照时间罗列出来,由用户选择其中一个或多个
如果前置Task不存在Task Instance,则提示warning,由用户确定是否坚持运行
另外,方法d的起始Task可能不止一个,要选择一个最小的Subgraph

2.2.2. 修改Task的配置

支持修改、删除或增加Task,修改Task包含Task依赖、Task配置参数等。

Job的Task配置

  • Job包含的Task配置,随时可以修改、增加或删除,没有限制

Job Instance的Task配置

  • 创建Job Instance时,会复制一份Job当前的Task配置,作为其执行计划
  • 所以,支持修改某个未运行的Task参数、输入、输出,暂不支持修改任务依赖,也不支持新增或删除

2.2.3. 日志查看

  • 调度日志,按照Job Instance分为单独文件,用于查看和分析执行情况
  • 任务执行日志,根据不同的任务类型,由任务自身存储

2.2.4. 任务类型

  • docker container
  • docker swarm service
  • slurm task

3. 数据库设计

4. 架构设计

相关文章

  • linux定时任务

    一 、简介 Linux下的任务调度分为两类,系统任务调度和用户任务调度 系统任务调度:系统需要定期执行的任务,比如...

  • Linux 系统之crontab命令

    Linux下的任务调度分为两类,系统任务调度 和 用户任务调度。 系统任务调度:系统周期性所要执行的工作,比如写缓...

  • 分布式定时任务系统

    任务调度系统与消息队列的本质区别:时间驱动 vs 事件驱动 任务调度系统的基本功能: 一般的任务调度系统,整体上看...

  • Linux任务调度

    crond任务调度 crontab用于定时任务的设置。任务调度:是指系统在某个时间执行的特定的命令或程序。任务调度...

  • 大数据相关开源项目汇总

    调度与管理服务 **Azkaban **是一款基于Java编写的任务调度系统任务调度,来自LinkedIn公司,用...

  • Linux定时任务

    Crond 任务调度 任务调度:是指系统在某个时间执行的特定的命令或程序分类:系统任务:有些重要的工作必须周而复始...

  • linux系统任务调度-crontab

    系统任务调度 配置文件:/etc/crontab 用户任务调度 安装crontab 说明: vixie-cron软...

  • 任务调度系统总结

    解决什么问题 把任务分配给合适的机器执行 分类 业务上可以分为: 批处理任务调度 “长服务”(例如VM,容器,to...

  • Linux(十二)任务调度

    12.1 概述 任务调度:是指系统在某个时间执行的特定的命令或程序。 任务调度分类: 1、系统工作:有些重要的工作...

  • os任务调度实现原理

    为什么要做任务调度-why 操作系统中最为显著的特性就是任务调度,任务调度主要来自于以下几种需求: 程序并发(mu...

网友评论

      本文标题:Dispather - 任务调度系统方案设计

      本文链接:https://www.haomeiwen.com/subject/rbialdtx.html