一种基于云架构的多源异构数据转换整合系统及其实现方法
技术领域
本发明属于数据转换整合,具体涉及一种基于云架构的多源异构数据转换整合系统及其实现方法。
背景技术
近年来,随着科技的迅猛发展和信息化建设的推进,使得人类社会所积累的数据量大大增加,数据的采集、存储、处理和传播的数量也与日俱增。同时,随着业务的发展、系统的建设,数据量也越来越大,结构差异越来越大。企业实现数据共享,可以使更多的人更充分地使用已有数据资源,减少资料收集、数据采集等重复劳动和相应费用,在管理决策过程中充分发挥信息资源的增值作用。但是,在实施数据共享的过程当中,由于不同用户提供的数据可能来自不同的途径,数据分散在企业各个地域位置,属于不同的系统,其数据来源、数据内容、数据格式和数据质量千差万别,有时甚至会遇到数据格式不能转换或数据转换格式后丢失信息等棘手问题,严重阻碍了数据在各部门和各软件系统中的流动与共享。因此,如何对数据进行有效的集成管理已成为增强企业商业竞争力的必然选择。
当前许多国外的企业级数据集成领域中,主要技术包括Informatica公司研发Informatica Enterprise Data Integration、InfoSphere Information Server和东方通研发的数据集成平台。现有技术中数据库和文件集成普遍采用直连方式,无法适应广域复杂网络环境,必须通过多次中转落地方式变通的实现级联,造成流程复杂、通信效率低等问题;并且功能扩展性差,一般只支持常用的关系数据库,对于国产数据库、规范数据文件、大数据平台组件的支持力度较差或不支持;同时,由于数据库、消息和文件往往都是单独产品,且技术架构不一致,对于企业级数据集成全过程监控能力较差,无法完全满足用户统一调度、管理和监控需求;其非分布式架构,产品性能无法完全满足日益增长的数据集成需求,无法做到数据处理能力动态横向扩展。
发明内容
发明目的:针对上述现有技术的不足,本发明旨在提供一种基于云架构的多源异构数据转换整合系统,实现对海量数据转换作业的调度与监控。
技术方案:一种基于云架构的多源异构数据转换整合系统的实现方法,所述方法基于SG-ETL系统,包括如下步骤:
(1)构建数据源适配框架,基于SG-ETL实现关系型数据库、列存储数据库对于多源异构数据转换整合系统的兼容和扩展;
(2)系统功能单元搭建,包括调度监控模块、开发模块、传输单元和数据库,所述调度监控模块通过数据库访问开发单元配置的任务,并且获取任务调度运行数据,所述开发模块向调度监控模块发送任务指令,所述的传输单元包括消息传输组件和跨域路由所组建的数据交换网络,所述的数据库包括全业务统一数据和独立业务数据;
(3)作业调度,通过对SG-ETL的trans和jobentry进行分任务和功能单元处理调度服务。
进一步的,任务调度服务具体步骤如下:
S101、获取该主任务的ID,所述主任务不依赖其他任务,且能够被其他任务依赖;
S102、获取增量信息,通过查询数据库获取该主任务的增量时间,并将时间存在集合中;
S103、递归查询主任务的依赖任务,查询出依赖任务的id、名称、在资源库中的路径和错误处理信息;
S104、根据任务执行时间和调度信息计算下次执行时间,并将下次执行时间写入数据库;
S105、循环执行主任务的依赖任务,获取依赖任务自己的增量时间,若依赖任务的主任务也有增量时间,则会取依赖任务的增量时间;然后设置任务默认的执行方式为同步执行,根据依赖任务的类型来判断是SG-ETL的trans还是entry执行具体任务;执行任务后,将本次依赖任务的增量时间和增量参数计算出下次该任务的增量时间并写入数据库中;
S106、如果任务在执行过程中出现错误根据任务的错误处理类型来判断是否继续执行接下来的依赖任务;如果不处理错误,则继续执行依赖任务,如果处理,则任务停止,不会继续执行接下来的依赖任务。
S107、完成所有依赖任务的执行工作,将主任务的下次增量时间和下次执行时间写入数据库。
步骤(1)所述异构数据的集成基于SG-ETL系统中SQL92标准的数据源适配框架,差异化SQL方言以框架的回调方法进行级联动态拼装,以此实现多源异构数据转换整合系统的兼容和扩展。
步骤(2)包括初始化SG-ETL运行时的环境,然后创建资源库对象,建立数据库连接,并且通过DS-SERVER采用数据库资源库访问SG-ETL配置完成的trans和jobentry。
步骤(3)采用DS-SERVER系统作为SG-ETL的调度子系统,将SG-ETL的数据库资源库作为同一数据源,在SG-ETL开发工具上开发的trans和jobentry保存到数据库资源库后,DS-SERVER在成功启动后读取trans和jobentry并放到DS-SERVER的调度容器中,由调度容器管理这些trans和jobentry的执行。
DS-SERVER系统启动过程如下:
S201、初始化:初始化DS-SERVER运行关键组件;
S202、获取已建任务:获取已经添加到DS-SERVER系统中的已上线的任务和模块;
S203、批量调度任务注册:将获取到的任务和模块添加到调度容器中;
S204、启动RMI服务:DS-SERVER系统提供了RMI接口供DMS系统调用,系统会根据用户配置的IP和端口创建RMI服务,然后在RMI服务上注册RMI接口。
所述方法基于SG-ETL的模块调度服务包括如下过程:
S301、关闭调度服务stopServer:立即停止还是等待当前任务完成后停止;
S302、关闭调度stopSchedule:关闭调度,包括服务/转换、流程/作业、模块,选择立即停止还是等待正在运行的任务完成后再停止;
S303、新增调度addSchedule:新增调度任务,包括服务/转换、流程/作业、模块;
S304、修改调度定时modifySchedule:修改包括服务/转换、流程/作业、模块的调度定时;
S305、手动执行manualExecute:手动执行调度任务,包括服务/转换模块、流程/作业模块,并且手动设置增量时间;
S306、强制关闭手动执行的任务killManualExecute:强制手动关闭手动执行的任务,包括服务/转换模块、流程/作业模块。
DMS的资源采集服务从系统启动时开启,直至系统关闭后停止,每隔10秒钟采集一次,采集系统的内存使用率,CPU使用率,硬盘使用率等,并将资源信息记录到表中。
由上述方法实现的一种基于云架构的多源异构数据转换整合系统,包括开发模块、资源库、管理监控DMS模块、调度服务DS-Server模块、数据库、文件传输组件、消息传输组件和跨域路由服务模块;
所述开发模块用于对数据处理逻辑进行基于步骤的可视化开发,包括基于生成的方式进行ETL流程编排,对来自各类数据库、文件、消息队列、应用系统异构数据源进行加工处理,还包括异构数据抽取、数据转换、数据传输、数据装载;
所述管理监控DMS模块针对ETL流程提供批量自动化作业调度,对文件传输、消息传送进行管理以及实时任务运行监控;
所述调度服务DS-Server模块从资源数据库中获取任务,并按照DMS配置的策略对任务进行调度执行;
所述资源数据库用于存放开发工具配置的数据处理任务、DMS调度配置信息、DS-Server运行信息以及运行日志;
所述文件传输组件运行基于数据流转发的大文件传输机制,包括文件不落地路由传输,异步业务处理结果反馈,文件传输组件与开发模块、调度服务模块协作运行;
所述消息传输组件基于消息的数据路由进行消息传输和对传输节点进行横向扩展;
所述跨域路由服务模块通过消息路由、文件路由实现异地间数据传输。
有益效果:与现有技术相比,本发明实现了可在广域复杂网络环境下,满足特大型跨地域集团企业多源异构数据高效融通需求,提供柔性架构、弹性伸缩、高性能、高可靠的一体化解决方案。同时,本发明所提供的基于云架构的多源异构数据转换整合系统突破了传统ETL工具理念,无论在体系架构设计、性能指标,还是在功能设计上更加符合智能电网的需求和未来的发展方向,可应用于行业外,具备很强的通用性。
附图说明
图1是本发明所述系统的结构框架示意图;
图2是实施例中所述系统的逻辑部署示意图;
图3是本发明所述方法中任务调度执行流程示意图;
图4是本发明所述方法中模块调度的执行流程示意图。
具体实施方式
为了纤细的说明本发明所公开的技术方案,下面结合说明书附图和具体实施例做进一步的阐述。
本发明公开了一种基于云架构的多源异构数据转化整合系统及其实现方法,实现对各类数据源的支持,包括各类关系型数据库、数据文件、大数据平台组件等,实现数据源到目标端的数据转换整合功能开发,以图形化的方式完成ETL流程配置开发工作,实现对海量数据转换作业的调度与监控。在实际的应用中,为国网公司全业务统一数据中心及大数据平台的重要底层支撑部件,可以实现对数据的联机分析处理、数据挖掘功能。
实施例1
一种基于云架构的多源异构数据转换整合系统的实现方法,所述方法基于SG-ETL系统,包括如下步骤:
(1)构建数据源适配框架,基于SG-ETL实现关系型数据库、列存储数据库对于多源异构数据转换整合系统的兼容和扩展;
(2)系统功能单元搭建,包括设置开发模块、管理监控模块、调度服模块、资源数据库、文件传输组件、消息传输组件和跨域路由服务模块;
(3)作业调度,包括对trans和jobentry进行分任务和模块处理调度。
对于任务调度服务具体步骤如下:
S101:获取该主任务的ID,所述主任务不依赖其他任务,但可以被其他任务依赖;
S102:获取增量信息,通过查询数据库获取该主任务的增量时间,并将时间存在集合中;
S103:递归查询主任务的依赖任务,查询出依赖任务的id、名称、在资源库中的路径和错误处理信息;
S104:根据任务执行时间和调度信息计算下次执行时间,并将下次执行时间写入数据库;
S105:循环执行主任务的依赖任务,获取依赖任务自己的增量时间,若依赖任务的主任务也有增量时间,则会取依赖任务的增量时间;然后设置任务默认的执行方式为同步执行,根据依赖任务的类型来判断是SG-ETL的trans还是entry执行具体任务;执行任务后,将本次依赖任务的增量时间和增量参数计算出下次该任务的增量时间并写入数据库中;
S106:如果任务在执行过程中出现错误根据任务的错误处理类型来判断是否继续执行接下来的依赖任务;如果不处理错误,则继续执行依赖任务,如果处理,则任务停止,不会继续执行接下来的依赖任务。
S107:完成所有依赖任务的执行工作,将主任务的下次增量时间和下次执行时间写入数据库。
该方法中的模块调度过程如下:
S201:获取该主模块的ID,所述主模块不依赖其他模块,但可以被其他模块依赖;
S202:获取增量信息,通过查询数据库获取该主模块的增量时间,并将时间存在集合;
S203:递归查询主模块的依赖模块,查询出依赖模块的id、名称、并行状态和错误处理信息;
S204:根据模块执行时间和调度信息计算下次执行时间,并将下次执行时间写入数据库;
S205:循环执行主模块的依赖模块,根据模块下的任务的执行策略选择并行方式或串行方式;
S206:如果模块在执行过程中出现错误根据模块的错误处理类型来判断是否继续执行接下来的依赖模块;若选择不处理错误,则继续执行依赖模块,若选择处理,则模块停止,不再继续执行接下来的依赖模块;
S207:所有依赖模块执行完成后,设置主模块为已完成,更新模块的完成时间,将主模块的下次增量时间和下次执行时间写入数据库中。
步骤(1)具体操作如下:
在异构数据集成方面,SG-ETL设计了基于SQL92标准的数据源适配框架,差异化SQL方言以框架的回调方法进行级联动态拼装,解决了异构数据源间SQL方言带来的不兼容问题,提升了对基于SQL的数据存储软件的兼容性与扩展性。
SG-ETL设计的数据库类型插件主要实现DatabaseInterface接口。这个接口包含了很多描述数据库行为的方法。开发数据库插件时可以根据情况覆盖或定义其中的任何方法。
不同的资源库在进行连接时加载的驱动、默认端口、连接方式、连接的URL都会有所不同,因此在设计上,SG-ETL开发数据库插件时可以根据情况覆盖或定义其中的方法。例如DatabaseInterface只是定义了加载驱动程序的接口,每个数据库插件在实现时加载各自的驱动程序。MySQL根据连接方式选择加载不同的驱动类。
不同的关系数据库都遵循SQL92语法标准。实际应用中,使用各家数据库厂商都提供的丰富的自定义标准函数库和语法。为了支持不同的数据库,很多方法需要根据当前数据库特性重写实现方法,例如获取表字段的方法,不同的数据库都要分别实现。例如MySQL获取表中字段使用limit关键字,而Oracle不支持limit关键字,需要使用rownum实现。
步骤(2)具体操作如下:
出于DS-SERVER与SG-ETL的低耦合及DS-SERVER访问SG-ETL资源的效率和安全等方面考虑,这里DS-SERVER采用数据库资源库访问SG-ETL配置完成的trans和jobentry。
首先,初始化SG-ETL环境,主要初始化SG-ETL运行时的环境。然后,创建资源库对象,建立数据库连接。DS-SERVER系统对外接口采用的是RMI方式的调用。
主要的接口参数定义如下:
(1)关闭调度服务stopServer:立即停止还是等待当前任务完成后停止。
(2)关闭调度stopSchedule:关闭调度,包括服务/转换、流程/作业、模块,可以选择立即停止还是等待正在运行的任务完成后再停止。
(3)新增调度addSchedule:新增调度任务,包括服务/转换、流程/作业、模块。
(4)修改调度定时modifySchedule:修改包括服务/转换、流程/作业、模块的调度定时。
(5)手动执行manualExecute:手动执行调度任务,包括服务/转换、流程/作业、模块,可以手动设置增量时间。
(6)强制关闭手动执行的任务killManualExecute:强制手动关闭手动执行的任务,包括服务/转换、流程/作业、模块。
DMS的资源采集服务从系统启动时开启,直至系统关闭后停止,每隔10秒钟采集一次,采集系统的内存使用率,CPU使用率,硬盘使用率等,并将资源信息记录到表中。
步骤(3)具体操作如下:
DS-SERVER系统作为SG-ETL的调度系统,采用SG-ETL的数据库资源库作为同一数据源。在SG-ETL开发工具上开发的trans和jobentry保存到数据库资源库后,DS-SERVER在成功启动后读取trans和jobentry并放到DS-SERVER的调度容器中,由调度容器管理这些trans和jobentry的执行。DS-SERVER系统会提供RMI接口供DMS系统调用,保证trans和jobentry的添加和删除。
DS-SERVER系统启动时除了读取已建任务和注册调度任务,还会初始化SG-ETL引擎,启动资源采集服务。DS-SERVER系统启动的主要顺序步骤有:初始化,获取已建任务,批量调度任务注册,启动RMI服务。
DS-SERVER启动过程如下:
(1)初始化:初始化DS-SERVER运行关键组件。
(2)获取已建任务:获取已经添加到DS-SERVER系统中的已上线的任务和模块。
(3)批量调度任务注册:将获取到的任务和模块添加到调度容器中。
(4)启动RMI服务:DS-SERVER系统提供了RMI接口供DMS系统调用,系统会根据用户配置的IP和端口创建RMI服务,然后在RMI服务上注册RMI接口。
截止到此,DS-SERVER系统已经初始化启动完成,将已上线任务放到调度容器中,并启动RMI服务成功。
实施例2
如图1和图2所示,该基于云架构的多源异构数据转化整合系统包括如下组成部分。
开发工具ETL-Designer:用于对数据处理逻辑进行基于步骤的可视化开发,支持鼠标拖拽生成的方式进行ETL流程编排,对来自各类数据库、文件、消息队列、应用系统等异构数据源进行加工处理,包括异构数据抽取、数据转换、数据传输、数据装载。
管理监控DMS:针对ETL流程提供批量自动化作业调度功能,支持十万作业规模调度,对文件传输、消息传送进行管理,具备高可用(HA)、分布式企业级特征,提供实时任务运行监控功能以及灵活的管理维护功能。
调度服务DS-Server:从资源库获取任务,并按照DMS配置的策略对任务进行调度执行。
资源数据库:用于存放开发工具配置的数据处理任务、DMS调度配置信息、DS-Server运行信息以及运行日志。
文件传输组件DataRoute:采用基于数据流转发的大文件传输机制,支持TB级别文件不落地路由传输,支持异步业务处理结果反馈机制,可与ETL开发工具、调度服务协作运行。
消息传输组件Brocker:提供基于消息的数据路由传输能力,并保证消息的安全可靠和数据最终一致性,提供灵活的部署架构,支持节点横向扩展。
跨域路由服务DomainRouter:提供异地间的消息路由、文件路由功能。
实际应用上,本发明所提供的数据转化整合系统可以概括为由整合引擎节点、调度监控节点、开发工具、传输节点和交换机构成,将多源异构数据在各个功能单元中进行转化和任务执行,然后通过交换机和云计算数据的转化和资源共享。该系统支持云环境部署、跨域级联部署、分布式部署;服务器配置:处理器32核,内存32GB,存储800GB,网络千兆带宽。
本发明还提供了一种实现上述基于云架构的多源异构数据转换整合系统的方法,对于该方法所基于的现有技术基础和本领域所熟知的常规技术在此不做详细的赘述,所述方法主要包括以下几个方面。
(一)数据源适配框架设计:
SG-ETL作为数据整合工具,设计上需能支持类型广泛的数据源。对于最常用的关系型数据库系统,还要提供本地的连接方式(如对于Oracle的OCI)。SG-ETL在设计上能够连接到普通关系型数据库并获取数据,如常见的Oracle、MS SQL Server、MySQL和PostgreSQL。
关系型和列存储库都在不断发展变化中,还不断出现新的数据库和数据库新版本,这样维护一个数据抽象层并不是一个容易的工作。抽象层的目标是为了使SG-ETL可以更容易更方便地支持一种新的数据库。但是随着数据库新版本的不断出现,数据库驱动不断出现问题,都是需要调整数据库部分的功能架构,因此设计上采用数据库类型的插件数据库插件来进行数据库的正确连接、执行SQL,同时也考虑现有数据的各种特殊功能和不同限制。
基本应用上,不同的关系数据库都遵循SQL92语法标准。实际应用中,使用各家数据库厂商都提供的丰富的自定义标准函数库和语法。在异构数据集成方面,SG-ETL设计了基于SQL92标准的数据源适配框架,差异化SQL方言以框架的回调方法进行级联动态拼装,解决了异构数据源间SQL方言带来的不兼容问题,提升了对基于SQL的数据存储软件的兼容性与扩展性。
(二)作业调度功能设计
数据调度自动化技术是大数据时代数据整合后台不可缺少的重要技术。数据是黄金,数据是整个社会乃各企业团体的重要资产,管好数据、用好数据是整个社会的重要命题。想要用好数据,首先就应该管好数据。而调度自动化技术,正是管好数据的重要保证。在众多大大小小数据仓库、数据集市以及各种各样的数据池子中,是批量调度自动化技术让大量数据的进出、存放、清洗、过滤、粗加工、细加工等各种各样的工作有序、高效的展开。没有批量调度自动化的数据管理、数据整合等ETL工作,所有工作必将变得紊乱、低效、失控。
SG-ETL为个人开发者提供了一个简单的数据整合实现方案。但是随着日益增多的关键人员的积极参与和慷慨的贡献,SG-ETL需要一个灵活的调度工具。
随着SG-ETL应用的访问量逐渐增加,且应用中有很多定时任务需要执行。在集群环境中,同样的定时任务,在集群中的每台机器都会执行,这样定时任务就会重复执行,不但会增加服务器的负担,还会因为定时任务重复执行造成额外的不可预期的错误。SG-ETL任务调度系统(DS-SERVER)有着功能丰富的任务调用系统,它可以创建简单或者复杂的几十、几百、甚至成千上万的定时任务。此外,调度系统还支持JTA事务和集群。DS-SERVER根据配置以定时或主动触发方式执行资源库中的任务,可配置并行、串行、依赖、增量等调度逻辑。
1.1DS-SERVER系统特征
(1)万级作业规模调度支持
DS-SERVER从开始,就定位为企业级调度基础软件,能实现成千上万级任务调度控制,能满足多种数据的调度规模需求。
(2)高可用(HA)、分布式企业级特征
为了保证系统的高可用性、高扩展性,整个产品核心设计采用层级架构。通过"DS-SERVER(调度控制中心)"+"DMS(页面管理)"协调工作,完成各种复杂的调度控制,同时,通过数据库主备,实现高可用性的企业级系统特性。
(3)多级组织架构
任务信息是调度的核心信息,为了有效管理与控制这些信息,DS-SERVER通过任务、模块等多级体系来组织作业信息,使整个发布到DS-SERVER的任务信息结构更清晰、更易管理、更易控制。
(4)强大的核心调度功能
灵活的流程驱动:一个任务的开始,可以通过文件到达触发、自定义周期定时触发(n分钟、n小时、n天等)以及自定义事件触发等。
关系策略:可以实现任务之间的并行、串行、依赖控制。特别是依赖控制,系统依赖机制,可以实现任务与任务,模块与模块的控制。
容错策略:可以实现任务与模块错误后自动重跑。
灵活的参数传递:用户可以通过定义增量参数来实现任务执行。
(5)全方位实时监控任务运行
为了用户实时了解作业的运行状况,DMS整体采用实时刷新、图形、多角度多口径统计等方式对整个平台作业进行全方位监控,以便用户及时掌握哪些作业正在运行、错误原因、失败、警告等信息。
(6)灵活的人工干预维护
人工干预是自动调度系统必不可少的功能,用户可以通过人工操作实现任务的重跑。
1.2作业调度
DS-SERVER系统中的调度任务并不是直接执行SG-ETL的trans和jobentry,因为单个的SG-ETL的trans和jobentry调用并不能满足大多数的复杂业务需求,这就需要对trans和jobentry进行分任务和模块处理调度,分任务和模块工作由用户在DMS系统上完成并记录到数据库中,DS-SERVER系统读取到任务和模块,根据表中关联关系到SG-ETL数据库资源库中读取具体的trans和jobentry执行。
DS-SERVER在获取到已上线的主任务后,会将该主任务添加到调度容器中。到了主任务的触发时间,主任务会触发并按照以下步骤执行。
步骤1:获取该主任务的ID,主任务即该任务不依赖其他任务,但可以被其他任务依赖。
步骤2:获取增量信息,通过查询数据库获取该主任务的增量时间,并将时间存在集合中方便后面执行任务使用。
步骤3:递归查询主任务的依赖任务,查询出依赖任务的id,名称,在资源库中的路径,错误处理等。
步骤4:根据任务执行时间和调度信息计算下次执行时间,并将下次执行时间写入数据库中。
步骤5:循环执行主任务的依赖任务,在依赖任务执行中,会获取依赖任务自己的增量时间,若依赖任务的主任务也有增量时间,则会取依赖任务的增量时间。然后设置任务默认的执行方式为同步执行,根据依赖任务的类型来判断是SG-ETL的trans还是entry执行具体任务。执行任务后,将本次依赖任务的增量时间和增量参数计算出下次该任务的增量时间并写入数据库中。
步骤6:如果任务在执行过程中出现错误,即任务的错误数大于1时,会根据任务的错误处理类型来处理是否继续执行接下来的依赖任务。如果不处理错误,则会继续执行依赖任务,如果处理,则任务停止,不会继续执行接下来的依赖任务。
步骤7:等所有依赖任务执行完成,将主任务的下次增量时间和下次执行时间写入数据库中。
1.3、模块调度原理
DS-SERVER在获取到已上线的主模块后,会将该主模块添加到调度容器中。到了主模块的触发时间,主模块会触发并按照以下步骤执行。
步骤1:获取该主模块的ID,主模块即该模块不依赖其他模块,但可以被其他模块依赖。
步骤2:获取增量信息,通过查询数据库获取该主模块的增量时间,并将时间存在集合中方便后面执行模块使用。
步骤3:递归查询主模块的依赖模块,查询出依赖模块的id,名称,是否并行,错误处理等。
步骤4:根据模块执行时间和调度信息计算下次执行时间,并将下次执行时间写入数据库中。
步骤5:循环执行主模块的依赖模块,首先获取模块下的任务的执行策略,即模块是并行方式执行还是串行方式执行。
DS-SERVER并行执行一个模块时,首先根据模块id查询模块下的跟随任务,获取跟随任务下的任务id,名称,资源库路径和错误处理等。获取到任务信息后设置模块的运行状态为运行中,设置模块下所有跟随任务的运行状态为未运行。在依赖模块执行中,会获取依赖模块自己的增量时间。然后并行执行模块下的所有跟随任务,根据任务获取到具体的SG-ETL的trans和entry后,设置任务默认的执行方式为异步执行,同样该任务会覆盖主任务的依赖时间,根据该任务的类型来判断是SG-ETL的trans还是entry执行具体任务,执行任务后,将本次任务的增量时间和增量参数计算出下次该任务的增量时间并写入数据库中。
在并行下执行完模块下的跟随任务后,在SG-ETL的资源库中获取执行过的SG-ETL的trans和entry的错误数,结果相加即可得到该次模块下的错误数。然后将模块的下次增量时间写入数据库中。
DS-SERVER串行执行一个模块时,首先根据模块id查询模块下的跟随任务,获取跟随任务下的任务id,名称,资源库路径和错误处理等。获取到任务信息后设置模块的运行状态为运行中,设置模块下所有跟随任务的运行状态为未运行。在依赖模块执行中,会获取依赖模块自己的增量时间。然后串行执行模块下的所有跟随任务,根据具体单次任务获取到具体的SG-ETL的trans和entry后,设置该次任务默认的执行方式为同步执行,同样该任务会覆盖主任务的依赖时间,根据该任务的类型来判断是SG-ETL的trans还是entry执行具体任务,执行任务后,将本次任务的增量时间和增量参数计算出下次该任务的增量时间并写入数据库中。
在串行下执行模块下的跟随任务过程中,模块的运行状态一直为运行中,且会根据模块下已完成的串行任务计算该模块的运行进度,并实时将模块运行进度记录到数据库表中。如果模块下的任务串行运行中,某次任务运行出错,则根据模块的错误处理来决定是否继续运行模块下其他任务。不处理则继续运行,处理则停止运行。最后同样在SG-ETL的资源库中获取执行过的SG-ETL的trans和entry的错误数,结果相加即可得到该次模块下的错误数。然后将模块的下次增量时间写入数据库中。
步骤6:如果模块在执行过程中出现错误,即任务的错误数大于1时,会根据模块的错误处理类型来处理是否继续执行接下来的依赖模块。如果不处理错误,则会继续执行依赖模块,如果处理,则模块停止,不会继续执行接下来的依赖模块。
步骤7:等所有依赖模块执行完成,设置主模块为已完成,更新模块的完成时间,将主模块的下次增量时间和下次执行时间写入数据库中。
本发明可以提供广域复杂网络环境下,满足特大型跨地域集团企业多源异构数据高效集成需求的基于云架构的弹性伸缩、高性能、高可靠的一体化解决方案。