MoiaControl调度开发规范

本文遵循BY-SA版权协议,转载请附上原文出处链接。


本文作者: 黑伴白

本文链接: http://heibanbai.com.cn/posts/47ae96fc/

1. 概述

1.1. 编写目的

本文档编是基于项目组应用架构进行调度开发的需求编写,对相关人员进行调度管理、开发、运维进行参考指导。

主要包括以下内容:

l 术语释义

l 命名规范

l 开发规范

l 运维管理

1.2. 适用对象

本规范适用于数据湖项目组使用MoiaControl调度平台进行调度开发相关系统的开发及运维人员。

2. 术语释义

调度对象

调度对象是指MoiaControl中用于调度的单位,MoiaControl中共有3级调度对象:计划、作业流、作业,呈上下级关系。

程序

程序是可被操作系统直接执行或者其它工具执行的代码,MoiaControl通过执行作业对应的程序完成对该作业的调度工作。

作业

作业是参数数目和形式固定、功能确定、返回码或退出码确定、完成特定功能的基本调度执行单位,多个作业可以指定同一个程序。

作业流

作业流是一组按照特定的业务控制流程组织起来的作业序列,它是作业的容器,作业流是MoiaControl中基本的流程组织单位,并可嵌套使用。

计划

计划是MoiaControl中一个基本的调度对象实例化管理单位,一个计划就是一个要执行的任务和控制命令的集合,计划中的节点之间可以设置流程依赖。

计划可以被实例化多份,每个示例可以设定不同的机构、批次和参数,以及不同的翻牌策略。同一个计划的实例只能有一个运行状态,一个实例只能运行一个日期的数据。

事件

事件是某个对象对自身状态或者行为变化的一种通知消息,事件机制是驱动 MoiaControl流程和运转的唯一途径。

在MoiaControl调度中,事件分为流程事件和全局事件,流程事件只在流程内有效,用于实现同一级调度对象间流程依赖:全局事件在整个调度系统内均有效,通常实现跨层次对象之间的依赖。

一个全局事件通过事件名称、机构号、日期、批次号等4个因素来标识。

流程

流程是同一层次对象之间的依赖关系的体现,一个对象的流程表示了该对象的下级对象执行路线。

在MoiaControl中,两个对象之间的流程依赖通过连线及箭头来表示,并通过用户自行绘制流程图来实现对象间依赖的配置和运行状态监控。

执行日历

执行日历是MoiaControl中调度对象的属性,标识了调度对象执行周期或规律,是判断日常计划翻牌后下级对象是否执行的依据。

执行日历分为日期日历和周日历,日期日历以年月日为选择范围,周日历以周一到周日为选择范围。

返回值

返回值是作业所对应程序执行完毕时返回的代码。在MoiaControl中可为每个作业自定义返回值表示其执行结束状态(成功、成功警告或失败)及描述,从而更准确的体现作业运行结果并采取相应的运维措施。

物理节点

物理节点是指在MoiaControl调度系统中所有物理机器,通常由一个调度节点和多个执行节点组成, 调度节点主要进行调度决策、资源分配和作业下发,执行节点接收调度节点下发的作业并执行,执行完毕后上传状态信息。

MoiaControl中,资源控制是通过每个执行节点上的资源总量和运行作业上限来实现的。

执行域

执行域是作业的调度属性,同时也是给作业运行分配的一批区域,作业只能在这个区域内执行;每个作业在配置时必须指定执行域,一个执行域内包含了一个或者多个执行节点,作业指定某个执行域就表示作业只能在执行域内的节点上 执行及分配资源。

由于环境(开发环境、测试环境、生产环境等)的差异,不同的环境中节点的数量、配置均有区别,所以不同的环境中同样名称的执行域需要分别进行节点配置,这也是MoiaControl屏蔽环境差异的手段。

独立资源

独立资源是为某类特殊作业设定的,通常这类作业在启动前进行资源分配时, 除了要受到资源量和作业运行数的限制,同时还受到同类作业在单个物理节点或者全局运行总数的限制。我们把这类作业归类为使用某种独立资源的作业,在资源分配时进行有效控制。

部署

部署是将配置数据从一个环境导入到另一个环境的过程,MoiaControl中部署通过从提供数据的环境中导出XML数据文件,再导入到目标环境中。部署的类型即可以是计划、任务,也可以是环境变量、执行域等。

环境变量

环境变量是为屏蔽各个环境之间的差异而设定的,每个环境变量通常由一个变量名称和一个变量值组成,在不同的环境上,相同的环境变量名称可以设定不同的变量值。

环境变量通常用于作业执行参数,比如PATH、用户名或者密码等,通过环境变量可以实现作业在从一个环境部署到另一个环境之后,需要修改任何参数就能运行。

3. 命名规范

在调度开发过程中主要使用的对象包括:程序、作业、作业流、计划、事件、执行日历、返回值、独立资源、环境变量,且涉及多个项目组在同一平台使用,故对相关对象的命名进行统一规范,方便后续的运维管理。

3.1. 程序

在MoiaControl中,程序是放在程序包中进行管理的,所以程序的规范涉及两部分命名的规范:

l 程序包的命名规范

系统名_程序标识

系统名:MDS、EDW、DC等系统英文简称

程序标识:程序类型、程序层级、程序功能等英文简称

l 程序的命名规范

程序的命名根据各系统内部规范自行命名即可,建议名称和程序功能对应,即通过程序名能够知道程序的功能等

img

3.2. 计划

计划是MoiaControl中最高层级对象,以相互独立、耦合较低为准则进行划分,基本命名规范如下:

PLAN_[系统名]_[模块名]

系统名:MDS、EDW、DC等系统英文简称

模块名:系统内部接入模块的简称,如MDS接入有DCBS、PES、BP等

img

3.3. 作业流

作业流是MoiaControl中基本的流程组织单位,基础命名规范如下:

SEQ_[系统名][模块名][功能]

系统名:MDS、EDW、DC等系统英文简称

模块名:系统内部接入模块的简称,如MDS接入有DCBS、PES、BP等

功能:如采集(EX)、转换(TR)、加载(LD)等

img

3.4. 作业

从直观即运维管理的角度,从作业的名称上应能得出作业所属系统、作业层级、功能等特点,所以应遵循以下命名规范:

JOB_[系统名][层级][模块名][接口名称][功能]_[标识]

系统名:MDS、EDW、DC等系统英文简称

层级:原始层(ODS)、明细层(DWD)、服务层(DWS)、应用层(ADS)等

模块名:系统内部接入模块的简称,如MDS接入有DCBS、PES、BP等

功能:如采集(EX)、转换(TR)、加载(LD)等

标识:如增量(ADD)、全量(ALL)等

img

3.5. 事件

在MoiaControl调度中,事件分为流程事件和全局事件,在本规范中,只限使用全局事件,而全局事件从使用上也可再分为两种:

外部事件:CPS、TCCS等模块发送给MOIA的事件

内部事件:即自定义事件,调度平台内部各对象(计划、作业流、作业)产生的事件

基本命名规则遵循如下规范:

外部事件:[系统名]EV_WAIT[模块名]_[批次]

内部事件:和产生对象名称保持一致

系统名:MDS、EDW、DC等系统英文简称

模块名:系统内部接入模块的简称,如MDS接入有DCBS、PES、BP等

批次:同一模块数据可能存在分多批次进行采集或推送,故进行批次的区分,可根据批次特点进行命名

img

3.6. 执行日历

执行日历标识了调度对象执行周期或规律,可根据需要进行自定义增加,日历的命名要能体现出日历所属即基本执行周期,基本命名规范如下:

[系统名]_[日历属性]_CALENDAR

系统名:MDS、EDW、DC等系统英文简称

日历属性:如每月1号(MONTH_01)、每年12月31号(YEAR_1231)等

img

3.7. 返回值

返回值是作业所对应程序执行完毕时返回的代码,若当前系统中默认的返回值不能满足需求,可根据实际情况进行自定义增加,基本命名规范如下:

[系统名][程序类型][返回值特性]_CLASS

系统名:MDS、EDW、DC等系统英文简称

程序类型:如Java、Shell、Python等

返回值特性:如重做(REDO)等,可选项

img

3.8. 独立资源

独立资源是为某类特殊作业设定的,主要是限定并发,可根据实际需要进行增加,基本命名规范如下:

[系统名]_[标识]

系统名:MDS、EDW、DC等系统英文简称

标识:可以是系统内模块名、功能缩写等

img

3.9. 环境变量

环境变量通常用于作业执行参数,比如PATH、用户名或者密码等,可根据实际需求自定义添加,基本命名规范如下:

[系统名]_[标识]

系统名:MDS、EDW、DC等系统英文简称

标识:如数据库用户名、数据库密码等

img

4. 开发规范

4.1. 对象层级配置

在本项目中,调度对象共使用计划、作业流、作业三个层级,虽然作业流层级支持嵌套,但为方便运维管理禁止使用。

img

4.2. 依赖配置

在本项目中,依赖的配置统一使用事件依赖,且配置到作业级别,方便后续影响分析,禁止将依赖配置到计划和作业流层级。

img

4.3. 优先级配置

在MoiaControl中优先级属性值为:0-99,数字越大表示优先级越高;作业进入队列的优先级规则为:计划优先级*10000+作业优先级。

在本项目中,对于优先级的配置划分为三个级别:非重点、次重点、重点,再根据在本级别中的重要程序进行优先级参数值的配置:

l 非重点:统一默认值0,无优先特权

l 次重点:1-50,

l 重点:51-99

5. 运维管理

5.1. 角色管理

在本项目中调度平台由多个项目组共同使用,涉及各权限的管理控制,需要进行不同角色的创建及权限分配。

一个角色包含“功能权限”和“数据权限”:

功能权限指通过角色访问的菜单;

img

数据权限指用户用户通过角色能访问的数据,权限类型分为两类,查看和控制。

查看:只能查看数据,不能做增、删、改操作;

控制:能对数据做增、删、改、查操作。

数据类型权限包括:计划、程序包、执行域、日历、返回值、环境变量、数据源、独立资源、ETL源和事件。

img

配置计划数据权限时,可以同步权限。同步后,计划下作业和作业流使用到的:日历、返回值、程序包、执行域、事件、独立资源、数据源、ETL源,会同步相同权限。若角色已存在权限,则以已有权限为准。

img

5.2. 用户管理

用户管理用于集中管理用户信息,功能包括:新增、修改、删除、角色配置和密码重置。权限体系如下图所示:

img

新增用户:新增用户密码和用户名相同。

修改用户:只能修改用户基本信息,不能修改密码。修改密码在页面右上角导航栏。

删除用户:管理员不能删除。

角色配置:适用于普通用户,一个用户可以配置多个角色。添加角色后,默认不同步数据权限到角色。选择角色,可修改同步权限到角色,设置同步后,此用户添加数据时,会同步权限到角色。

img


蚂蚁再小也是肉🥩!


MoiaControl调度开发规范
http://heibanbai.com.cn/posts/47ae96fc/
作者
黑伴白
发布于
2022年6月7日
许可协议

“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付