基于osgi的etl处理装置及方法

文档序号:8361178阅读:177来源:国知局
基于osgi的etl处理装置及方法
【技术领域】
[0001]本发明涉及数据处理技术领域,尤其涉及一种基于OSGI的ETL处理装置及方法。
【背景技术】
[0002]随着计算机技术的发展和科技的进步,各个领域不断积累了大量的业务数据,对于企事业单位来说,这是一个蕴含着对企业管理有决策意义的巨大宝库。有效抽取、整合、利用这些数据,成为企业的迫切需求,同时也是大数据时代下企业资源利用的瓶颈。数据抽取、转换和装载(ETL, Extract1n-Transformat1n-Loading)为数据的处理和有效利用提供了技术引导。
[0003]ETL负责将分散的、异构数据源中的数据,如关系数据、平面数据文件等抽取到临时中间层后,进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
[0004]现有技术的ETL工具,要么采用单线程处理机制,导致数据吞吐量小;要么对子任务间模块进行统一依赖性定义,导致任务一经定义无法更改。因此,存在数据吞吐量小、处理效率低、任务可重用性不高的问题。
[0005]OSGI (Open Service Gateway Initiative)是面向 Java 的动态模型,它为模块化应用的开发定义了一个基础架构,使得应用程序可以实现定义精炼的、可重用的和可写作的标准组件,并能灵活地、动态地组装和部署到应用系统中。为此,本发明将ETL技术搭建在OSGI环境下,以子任务模块为单位,动态地加载、部署程序代码,以实现模块间的松散耦合,提高ETL任务可重用性。
[0006]同时在任务间采用多线程缓存及数据分发复制机制,提高数据吞吐量和处理效率。

【发明内容】

[0007]基于此,本发明提供一种基于OSGI的ETL处理装置及方法,以解决现有技术存在的数据吞吐量小、处理效率低、任务可重用性不高的问题。
[0008]本发明提供了一种应用于OSGI环境下的ETL处理装置,包括:流程设计器,由节点中心、控制策略和触发器三个模块组成,用于定义任务流程中每一个节点及节点间的控制策略,并负责触发任务请求;流程执行引擎,由处理中心、执行策略和流程管理三个模块组成,接收并解析流程设计器传达的请求,调度、分发、执行请求,并返回执行结果。
[0009]流程设计器和流程执行引擎均基于OSGI平台,可独立运行的子模块通过OSGI创建其运行环境,运用时直接调用,多次运用,无需重新创建运行环境。
[0010]节点中心,用于定义并管理各个节点及节点属性,每个节点即为流程内的一个子任务,每一个节点作为OSGI的一个Bundle模块,并为每个Bundle模块编制运行代码形成独立的JAR文件,以便于需要时直接调用。
[0011 ] 控制策略,用于定义节点间的相互关系,及子任务触发方式。
[0012]触发器,负责向流程执行引擎发送各种请求,包括流程定义、流程执行、任务执行坐寸O
[0013]任意一个流程的描述信息包括节点及控制策略,这些信息在流程形成过程中自动生成,并以一种结构化的文档储存,为便于描述,将这一文档简称“配置文件”。
[0014]在触发器触发“任务形成”请求时,将配置文件发送给流程执行引擎并保存。
[0015]处理中心,负责任务的执行及执行时的调度。
[0016]执行策略,定义并实现各种执行时的策略,包括单线程串行、多线程并行以及条件判断策略。
[0017]流程管理,储存、检索、管理配置文件,便于处理中心做任务调度,执行策略进行策略分配。
[0018]在触发器触发“任务执行”或“流程执行”请求时,处理中心解析请求,获取执行请求所需的配置文件,并解析配置文件,选取执行策略,调度并触发各子任务,由OSGI自动处理Bundle模块(节点)间的依赖关系,形成可执行中间件。
[0019]由处理中心负责执行任务或流程,并将执行结果返回给流程设计器。
[0020]执行策略中采用缓存机制实现,在每个控制策略中都存在一个缓存队列,同时考虑大数据缓存瓶颈问题,设计了数据分发与复制的双重技术实现多线程并行策略。
[0021]当转换节点所需数据超过了转换节点与输入节点间的缓存上限时,为保证数据吞吐量和处理效率,需要将转换节点的任务分散到多个子节点执行,此时,需要按照一定的分发技术,将输入节点产生的数据分发到输入节点与转换子节点的缓存队列中,以供转换子节点循环读取各自消息队列中缓存的数据做下一步转换操作。
[0022]数据复制是指将输入节点产生的数据复制η份,依次分配到输入节点与转换节点Γη的消息缓冲队列中。
[0023]当某一子任务的数据输入量很大时,可以将这一子任务分配到多个节点执行,此时可以采用数据分发技术;对这多个节点执行的结果采用数据复制技术,保持数据的同步性,形成流程中下一子任务的输入数据。
[0024]此外,当多个子任务需要同一输入节点产生的数据时,这些子任务间是相互独立的,可以采用数据复制技术以保持数据的同步性。
[0025]其中数据分发包括:随机分发、轮流分发、取膜求余分发、自定义分发等方法。
[0026]本发明还提供了一种基于OSGI的ETL处理方法,将ETL处理交由一个个独立的任务完成,每个任务由任务流程构成,该处理方法包括。
[0027]步骤A:任务节点及其关系定义,定义任务流程中的各个节点、节点间的关系及节点触发方式,将节点定义成OSGI上的Bundle模块,并为每个节点赋予流程子任务。
[0028]步骤B:任务流程生成并上传,生成任务流程的配置文件,并将配置文件上传到流程执行引擎中。
[0029]步骤C:任务解析、调度,解析配置文件确定任务流程内包含的各子任务、控制策略、执行顺序和相互间依赖关系。
[0030]步骤D:执行策略抽取,根据流程配置文件抽取各子任务执行策略,向处理中心提供对应接口。
[0031 ] 步骤E:任务流程执行,处理中心根据解析信息及执行策略,执行任务。
[0032]本发明例中提供了一种基于OSGI的ETL处理装置及方法,即借助OSGI的动态部署优势,将ETL任务写入到OSGI的Bundle模块中,并由OSGI自动处理Bundle模块间的依赖解析。在ETL任务组件时,动态调用任意Bundle模块形成任务流程,提高任务可重用行。在面对大数据的任务流程处理时,采用多线程、数据分发机制,提高数据吞吐量及处理效率。
【附图说明】
[0033]图1为本发明实施例提供的基于OSGI的流程处理装置的模块图。
[0034]图2为本发明实施例提供的基于OSGI的流程处理方法流程图。
具体实施方案
[0035]为使本发明实施例的目的、技术方法、及优点更加清楚明白,以下结合附图对本发明实施例提供的技术方案进行详细说明。
[0036]本发明实施例中,ETL处理装置由流程设计器和流程执行引擎构成,其中流程设计器包括。
[0037]节点中心,定义并管理节点及其属性,节点定义成OSGI的Bundle模块,任意一个节点封装成独立的jar文件,便于重用。
[0038]控制策略,定义节点间可能的相互关系,及子任务触发方式。
[0039]触发器,负责向流程执行引擎提交各种请求。
[0040]任意一个流程的构建,包括Bundle模块调用、控制策略选择,并根据实际情况对模块及策略进行改写性重定义,形成配置文件。
[0041 ] 其中,流程执行引擎包括。
[0042]处理中心,负责任务的执行及执行时的调度,如执行时的流程调度和流程执行时的流程内节点调度。
[0043]流程管理,储存、检索、管理配置文件,便于处理中心做任务调度,执行策略进行策略分配。
[0044]执行策略,定义各种执行时策略,包括单线程串行、多线程并行及条件判断。
[0045]当触发器发送“任务形成”命令时,处理中心执行任务,并将任务的配置文件存储在流程管理模块中;当触发器发送“任务执行”请求时
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1