参考市面上成熟的任务执行框架在线课堂,我们也采取了任务和任务执行实例分离的设计思想,同时引入了触发记录的概念,在实例级别调度控制的基础上,扩展了对于整体调度执行的把控:
2.1. 领域模型概念阐述
2.1.1. 任务
一次工作流的统称在线课堂,比如一次图片素材导入任务,可以拆解为以下的工作流程:
素材准备;
数据分片 & 分桶;
素材 key 生成以及素材上传 OSS;
基础属性写入;
扩展属性写入;
任务应该具有这几个基本属性:
任务类型;
调度属性:包括调度类型(一次性调度或周期性调度)和调度所依赖的时间信息等;
调度依赖:包含任务执行所需要的一些配置信息在线课堂,如图片素材应该从哪里以什么样的筛选条件读取;
状态在线课堂。
要注意的是,任务本身并不能被执行,只有经过触发且实例化后,才能被执行在线课堂。
2.1.2. 触发器 & 触发记录
通过触发器,触发任务并生成一条触发记录,然后依据触发记录将任务进行实例化在线课堂。
2.1.3. 任务实例
任务的最小可执行单元在线课堂。实例之间具有依赖关系,只有前置依赖被执行完成,实例才可以被执行;同时实例具有分组,所以可以在分组维度进行并发控制。实例具有以下基本属性:
实例类型:目前支持 odps 节点在线课堂,odps sql 和 java 执行实例;
实例依赖节点;
实例分组;
实例归属的任务;
实例归属的生成记录;
执行状态在线课堂。
2.2. 任务触发示例展示
在任务维度,可以获取所有的触发记录,在触发记录维度,可以进行实例的批量操作(终止和重跑);在实例维度,可以查看实例具体的执行状态以及进行最细粒度的执行控制:单实例级别的任务终止和重跑在线课堂。