ETL自动化运维调度工具 TASKCTL控制容器概述

123 阅读6分钟

高效的TASKCTL

在产品中,控制信息主要通过具有一定规则的文本实现,且该文本信息直接面向用户设计开发。因此,掌握该文本信息的组织规则是设计 TASKCTL控制器的根本前提。

理解作业控制器,我们首先需理解调度中与控制容器(流程、定时器)相关的几个基本概念,它们分别是:作业、控制器、流程、定时器和调度。

  • 作业:在系统后台处理中,我们经常把具有相关业务逻辑的处理由一个单独的执行代码、脚本、存储过程以及诸如 DataStage 第三方 ETL 工具开发的程序来完成,比如:数据计算、文件拷贝、数据导入等。我们把这些由一个个程序完成的处理逻辑称为作业,有的资料将其称为作业。

  • 控制器:在目前调度业界,主要采用流程或定时的方式去调度、控制作业。TASKCTL 把这种流程或定时方式控制作业的容器统称为控制器。从技术本质来说,定时器的无序特征与流程控制器的有序特征形成了完整的控制技术体系。

  • 流程:在实际业务需求中,一个个单独的作业是不能满足需求的,他们 之间可能是独立的,也可能存在一定的相互关系,比如运行先后关系等, 同时也存在一定运行时间限制,我们需要把各个作业按一定的关系,在指定时间范围内运行才能满足需求,这种统一控制各个作业处理的过程称为流程控制。

  • 定时器:定时器是TASKCTL之前版本新增的技术概念。它的基本作用是按照一定的时间间隔定时地去控制执行无序的作业集合。在 TASKCTL 中表达流程和定时器相差不大。下面关于控制器信息结构、信息文件的组织结构以及核心信息模块代码文件的说明,主要以流程作为描述主体。

  • 调度:根据不同控制器的不同配置信息,将不同控制器的作业按要求执行过程就称为调度。

流程与调度核心的关系

TASKCTL 调度的核心作业就是按实际应用需求有序控制批量程序的运行, 主要实施原理如下图所示:

通过上图,可以了解知道,调度系统的控制目标是按要求执行各种各样的作业程序,为了完成这一目标,我们主要通过两部分工作完成。第一步,构建一个可以解析流程信息的控制核心,第二步,按项目需求开发配置流程控制信息。调度核心通过解析按照项目需求开发的流程信息,从而完成项目的调度需求。

由此可知,流程信息是整个调度的核心信息,对调度的实际运行起到决定性作用。

流程结构

我们分别了解控制器的基本概念与作用。本节主要说明控制器在实施时的主要信息结构、信息文件的组织结构以及核心信息模块文件的设计思路。

信息结构

为了完成调度,从信息层面上,TASKCTL 需要多种类型的信息对流程进行设计与描述,其信息结构如下:

由上图可知,流程信息主要包括两种类型的信息:总控信息与核心信息。

总控信息

总控信息指流程的主要概述信息以及一些基本控制信息,我们可以将其称为流程的工程信息,就像传统面向对象编程一样,在设计程序时,需要一个工程文件,通过该文件来描述程序的基本信息、基本引用、主程序、类信息等概述信息。

核心信息

流程核心信息是流程设计的主要内容,包括作业基本信息与控制策略信息

作业基本信息:作业基本信息是流程的主要内容之一,它用于描述调度 目标程序的各种信息,比如: Datastage 开发Job、Informatica 开发的session、存储过程、脚本程序等。作业基本信息主要包括:作业名称、作业对应的程序名称、作业运行所需的参数等。 控制策略信息:控制策略信息是调度核心灵魂信息,该信息决定了调度 平台在什么情况下、什么时候怎么调用作业目标程序。

控制策略信息的本质为相关作业运行条件信息。比如依赖条件、互斥条件、执行计划条件等。 流程文件系统 TASKCTL 是无数据库调度平台,对于客户化的各种流程信息是通过具有一定组织特征的文件系统来存放,并通过 XML 语言描述各类信息。

TASKCTL 流程文件系统结构如下:

由上图得知,流程的文件系统主要包括两类文件:流程总控文件与模块文件。

总控文件

总控文件,主要存放流程的总控信息。一个流程必须且只有一个总控文件。

模块文件

在实际 ETL 应用中,一个流程可能包含几百甚至上千个作业,使其作业基本信息与相关控制策略等信息非常庞大,为了有效管理这些信息,TASKCTL 引入模块概念,模块指具有一定关系的作业集合。对于大流程,用户可以根据作业的运行顺序、运行关系以及作业间的业务关系等信息,通过模块来划分并对流程进行重新组织,这不仅方便流程管理,同时也使流程变得更清晰,如下图所示:

在技术方面,一个模块通过一个文件来描述,且文件名称即模块名称。而一个流程包含一个或多个模块并有且只有一个主模块。主模块是流程的入口模块, 就像程序的入口函数一样。对于流程主模块,由总控信息决定。

另外,由流程文件系统结构图得知,流程模块组织关系是以主模块为根节点树状结构关系,其中父子级联关系是通过父模块中相关节点定义确定的,具体参见模块代码相关章节。

模块信息组织思路

模块作为流程核心信息的基本组织单位,同时也是用户开发设计流程的主要对象。为了更好地设计流程,首先需要深入理解模块信息的组织思路。

TASKCTL 流程以模块为单位的流程核心信息组织思路是有别传统的思路,是一种创新的思路。

产品官网:www.taskctl.com