CN112685483B - 基于数据管道和安全沙箱的etl方法、装置、设备和介质 - Google Patents
基于数据管道和安全沙箱的etl方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN112685483B CN112685483B CN202011499040.7A CN202011499040A CN112685483B CN 112685483 B CN112685483 B CN 112685483B CN 202011499040 A CN202011499040 A CN 202011499040A CN 112685483 B CN112685483 B CN 112685483B
- Authority
- CN
- China
- Prior art keywords
- component
- data
- etl
- loading
- actuator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 244000035744 Hura crepitans Species 0.000 title claims abstract description 27
- 238000011068 loading method Methods 0.000 claims abstract description 79
- 238000005538 encapsulation Methods 0.000 claims abstract description 8
- 238000006243 chemical reaction Methods 0.000 claims description 52
- 238000000605 extraction Methods 0.000 claims description 48
- 230000006870 function Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 8
- 230000009466 transformation Effects 0.000 claims description 7
- 239000000284 extract Substances 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 abstract description 7
- 230000004048 modification Effects 0.000 abstract description 6
- 238000012986 modification Methods 0.000 abstract description 6
- 230000007547 defect Effects 0.000 abstract description 5
- 238000013480 data collection Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 16
- 230000000903 blocking effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种基于数据管道和安全沙箱的ETL方法、装置、设备和介质,方法包括:启动执行器接收前端的任务报文信息,并提取出各阶段的组件编码分别实例化出各阶段组件,通过无锁的内存队列构建各阶段组件之间的数据管道,从而构建ETL拓扑实例,启动数据采集,数据通过数据管道传输,实现中间数据不落地,且数据边生产边消费;其中,各阶段组件是独立且可复用的组件,并能按业务场景自由对接;数据的结构为经过封装改造的数组;其中类加载是采用扩展的双亲委派模型进行,使所述执行器各各阶段组件运行在各自独立的安全沙箱中。从而解决了目前ETL采集方案中传输速度小,性能损失大,组件和业务强相关,以及双亲委派模型存在的包冲突缺陷问题。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种ETL方法、装置、设备和介质。
背景技术
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
组件是一个组装单元,它具有约定式规范的接口,以及明确的依赖环境。本案,组件用来实现具体业务的ETL功能,是一个软件功能包的总称。
ETL采集装置分三个阶段,即抽取、转换、加载。各阶段的数据源依赖上一模块处理后的数据结果,即转换阶段的数据依赖抽取阶段的输出数据;加载阶段的数据依赖转换阶段的输出数据。
现有的ETL采集装置方案一,如图1所示:抽取阶段:从源端抽取数据,并将抽取结果输出到临时数据,可以是内存、数据库、文件等;转换阶段:从上一步的临时数据读取数据,对数据进行转换,并将转换结果输出到临时数据,可以是内存、数据库、文件等;加载阶段:从上一步的临时数据中读取数据,将数据加载至目的数据源,可以是数据库、文件等。该方案抽取和转换阶段都需要将数据临时存储到临时数据中,即将临时数据作中转,每个阶段都要依赖上一阶段完成才能启动,同时可能需要消耗大量的磁盘IO或网络带宽,采集效率低,对于实时性要求较高的业务场景可能无法满足其时效性要求。
现有的ETL采集装置方案二,如图2所示:抽取、转换、加载通过队列建立起连接,抽取阶段从源端抽取数据并发送至队列一;转换阶段从队列一消费数据并执行转换逻辑,将转换后的数据发送至队列二;加载阶段从队列二消费数据并将数据加载至目的数据源中。该方案采用队列进行传输,相比于方案一,少了临时存储,采集时间会缩短,但该方案还是存在缺陷。各阶段的具体功能组件若采用单线程时,容易造成性能瓶颈,当读写速度不匹配将导致整体速度下降,吞吐量低;各阶段的具体功能组件若采用多线程时,需要使用阻塞队列做线程安全保障,锁的引入会对性能造成损失,尤其当采集需要花费较长时间时,锁带来的性能损失将被放大的更为明显。同时,使用队列需要频繁的分配内存和回收内存,在JAVA***中,可能因为垃圾回收造成***短暂的停顿。此外,这种方案还有一种更严重的缺陷,单组件实现的ETL功能具有强业务耦合,如:从FTP到HDFS组件、从FTP到FTP组件、从Hive到Oracle组件、从Hive到Mysql组件等等,所有的ETL功能封装在一个组件中,组件和具体的业务场景具有强相关性;相同数据源的逻辑基本相同,代码重复度高,维护易出错。
且所述方案一和方案二同时还有一些共同的缺陷,组件所依赖的第三方包容易互相冲突,或与ETL框架所依赖的包产生冲突。如:某个组件引用到kafka1.x的包,另一组件引用到kafka2.x的包,两个版本的包存放在同一组件目录引起包冲突,组件对外开放性差。要解决包冲突,就必须扩展双亲委派模型。而现有的双亲委派模型在传统的ETL采集方案中存在如下缺陷:
双亲委派模型一,如图3所示,该模型下,执行器框架和组件都由App ClassLoader类加载器,所以组件和组件、组件和执行器之间的包极其容易冲突。
双亲委派模型二,如图4所示,该模型下,组件和组件之间属于同级的ClassLoader不会冲突,然而组件Class Loader的父Class Loader是App ClassLoader(执行器运行在这里),组件在实例化类的时候,优先委托App ClassLoader加载,当App ClassLoader和组件ClassLoader下有相同包的不同版本时,还是会引起冲突。
发明内容
本发明要解决的技术问题,在于提供一种基于数据管道和安全沙箱的ETL方法、装置、设备和介质,从而解决了目前ETL传输速度小,性能损失大,组件和业务强相关,以及双亲委派模型在传统的ETL采集方案中存在包冲突缺陷问题。
第一方面,本发明提供了一种ETL方法,包括下述步骤:
S1、通过启动模块启动执行器;
S2、执行器接收前端的任务报文信息,根据任务报文信息,提取出抽取、转换和加载对应的组件编码,并根据所述组件编码分别实例化出抽取组件、转换组件和加载组件,并通过无锁的内存队列构建所述抽取组件、所述转换组件和所述加载组件之间的数据管道,从而构建ETL拓扑实例;其中,
所述抽取组件、所述转换组件和所述加载组件是由实现ETL功能的单组件解耦而成的,是独立且可复用的组件,并能按业务场景自由对接;
S3、所述ETL拓扑实例启动数据采集,数据通过所述数据管道传输,依次由所述抽取组件、所述转换组件和所述加载组件进行抽取、转换和加载,实现中间数据不落地,且数据边生产边消费;其中,
所述数据的结构为经过封装改造的数组,即利用缓存行填充、CAS原子操作,实现无锁的内存队列;
整个ETL过程的类加载是采用扩展的双亲委派模型进行,App ClassLoader只加载JAVA的基础包,执行器和组件包的加载则分别由执行器ClassLoader和组件ClassLoader去完成,且所述执行器ClassLoader和所述组件ClassLoader的父加载器均为AppClassLoader,使所述执行器、所述抽取组件、所述转换组件和所述加载组件做到类隔离,运行在各自独立的安全沙箱中。
第二方面,本发明提供了一种ETL装置,包括:
启动模块,用于启动执行器;
执行器,用于接收前端的任务报文信息,根据任务报文信息,提取出抽取、转换和加载对应的组件编码,并根据所述组件编码分别实例化出抽取组件、转换组件和加载组件,并通过无锁的内存队列构建所述抽取组件、所述转换组件和所述加载组件之间的数据管道,从而构建ETL拓扑实例;其中,
所述抽取组件、所述转换组件和所述加载组件是由实现ETL功能的单组件解耦而成的,是独立且可复用的组件,并能按业务场景自由对接;
ETL拓扑实例,用于启动数据采集,数据通过所述数据管道传输,依次由所述抽取组件、所述转换组件和所述加载组件进行抽取、转换和加载,实现中间数据不落地,且数据边生产边消费;其中,
所述数据的结构为经过封装改造的数组,即利用缓存行填充、CAS原子操作,实现无锁的内存队列;
整个ETL过程的类加载是采用扩展的双亲委派模型进行,App ClassLoader只加载JAVA的基础包,执行器和组件包的加载则分别由执行器ClassLoader和组件ClassLoader去完成,且所述执行器ClassLoader和所述组件ClassLoader的父加载器均为AppClassLoader,使所述执行器、所述抽取组件、所述转换组件和所述加载组件做到类隔离,运行在各自独立的安全沙箱中。
第三方面,本发明提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的方法。
第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述的方法。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:将用于实现ETL功能的单组件解耦生成独立且可复用的组件,分别用于抽取、转换和加载,组件具备原子性,能按业务场景自由对接,从而构建了面向标准接口的组件程序架构;利用ClassLoader的特性,扩展双亲委派模型,为组件运行线程、框架运行主线程提供安全的沙箱环境,使组件与组件、组件与框架做到类隔离,任一个组件的更新、修改、局部错误均不影响全局;数据采用数组结构,再通过无锁的内存队列构建高性能的数据管道,使数据传输不落地,数据边生产边消费,提升任务的采集效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为现有的ETL采集装置方案一的结构示意图;
图2为现有的ETL采集装置方案二的结构示意图;
图3为现有的双亲委派模型一的结构示意图;
图4为现有的双亲委派模型二的结构示意图;
图5本发明实施例一中ETL方法中的流程图;
图6为本发明实施例扩展后的双亲委派模型的结构示意图;
图7为本发明实施例二中ETL装置的结构示意图;
图8为本发明实施例三中电子设备的结构示意图;
图9为本发明实施例四中介质的结构示意图。
具体实施方式
本申请实施例通过提供一种基于数据管道和安全沙箱的ETL方法、装置、设备和介质,从而解决了目前ETL采集方案中,传输速度小,性能损失大,组件和业务强相关,以及双亲委派模型存在包冲突缺陷问题。
本申请实施例中的技术方案,总体思路如下:利用面向对象编程的思想将单组件实现ETL的功能解耦成E(抽取),T(转换)、L(加载)三个阶段的组件,每个组件都是一个独立可复用的单元,组件具备原子性;抽取组件只负责抽取、转换组件只负责转换、加载组件只负载加载,职责分明;使得Reader、Transform、Writer组件可以按业务场景自由对接,从而构建了面向标准接口的组件程序架构。再将传输的数据的结构改为经过封装改造的数组,利用缓存行填充、CAS原子操作,实现无锁的内存队列。相比于阻塞队列,它无需回收队列中的节点节省了垃圾回收时间,无锁减少了线程上下文切换带来的开销。且利用无锁的内存队列,构建抽取组件和转换组件、转换组件和加载组件之间的数据管道,从而构建ETL拓扑实例,数据通过数据管道传输,实现中间数据不落地,数据边生产边消费,提升采集效率。还利用ClassLoader的特性,扩展双亲委派模型,为组件运行线程、框架运行主线程提供安全的沙箱环境,使组件与组件、组件与框架做到类隔离,任一个组件的更新、修改、局部错误均不影响全局。
实施例一
如图5所示,本实施例提供一种基于数据管道和安全沙箱的ETL方法,包括下述步骤:
S1、通过启动模块启动执行器;
S2、执行器接收前端的任务报文信息,根据任务报文信息,提取出抽取、转换和加载对应的组件编码,并根据所述组件编码分别实例化出抽取组件、转换组件和加载组件,并通过无锁的内存队列构建所述抽取组件、所述转换组件和所述加载组件之间的数据管道,从而构建ETL拓扑实例;其中,
所述抽取组件、所述转换组件和所述加载组件是由实现ETL功能的单组件解耦而成的,是独立且可复用的组件,并能按业务场景自由对接;
S3、所述ETL拓扑实例启动数据采集,数据通过所述数据管道传输,依次由所述抽取组件、所述转换组件和所述加载组件进行抽取、转换和加载,实现中间数据不落地,且数据边生产边消费;其中,
所述数据的结构为经过封装改造的数组,即利用缓存行填充、CAS原子操作,实现无锁的内存队列;
整个ETL过程的类加载是采用扩展的双亲委派模型进行,App ClassLoader只加载JAVA的基础包,执行器和组件包的加载则分别由执行器ClassLoader和组件ClassLoader去完成,且所述执行器ClassLoader和所述组件ClassLoader的父加载器均为AppClassLoader,使所述执行器、所述抽取组件、所述转换组件和所述加载组件做到类隔离,运行在各自独立的安全沙箱中。
其中,作为本实施例的一种更为具体的实现方式:
关于ETL组件,本申请实施例中所述抽取组件为Reader类组件,转换组件为Transform类组件,加载组件为Writer类组件。具体实现时可利用面向对象编程的思想对实现ETL功能的单组件进行解耦形成E(抽取),T(转换)、L(加载)三个阶段的组件,即抽取组件、转换组件和加载组件,使每个组件都是一个独立可复用的单元,具备原子性;抽取组件只负责抽取、转换组件只负责转换、加载组件只负载加载,职责分明;使得Reader类组件、Transform类组件、Writer类组件可以按业务场景自由对接。如Reader类组件hdfs-reader、mysql-reader;Transform类组件transform;Writer类组件hive-writer、mysql-writer。根据现有这些组件就可以组合出如下一些业务场景:hdfs-reader->transform->hive-writer、mysql-reader->transform->hive-writer、hdfs-reader->transform->mysql-writer。
关于传输的数据结构,本申请实施例采用数组形式进行传输,数组是最常见的数据结构,它具有一个特性,在加载某个元素时可以预加载相邻的数据。数组在初始化后,对象一直存在于内存中,且可以基于下标随机访问数组中的某个元素。计算机有L1、L2、L3的三级缓存、L1靠近CPU、L3靠近主内存,计算机中的缓存原理,越靠近CPU的缓存速度越快。缓存行一般是64字节或128字节、通过对数组下标的缓存行填充技术,将其扩充至64字节或128字节,使其占据完整缓存行,同时利用volatile特性,使下标的修改具有可见性,解决伪共享问题,让无锁内存队列的访问能够命中较近的缓存,减少内存寻址路程。通过基于CPU级别的CAS原子操作,解决多线程读写问题。本申请实施例基于数组的数据结构,对数组进行封装改造,利用缓存行填充、CAS原子操作,实现无锁的内存队列。相比于阻塞队列,它无需回收队列中的节点节省了垃圾回收时间,无锁减少了线程上下文切换带来的开销。利用无锁的内存队列,构建抽取组件和转换组件、转换组件和加载组件间的数据管道,构建ETL拓扑实例,数据通过数据管道传输,实现中间数据不落地,数据边生产边消费;该数据管道还支持并行写入和并行消费,提升采集效率。
关于类加载时采用的双亲委派模型,ClassLoader是JAVA的类加载器,依据类的全限定名称和双亲委派机制将类加载至JVM中。双亲委派的原理:类的加载优先委托父亲去加载,父亲若无法加载,则委托父亲的父亲加载,直至委托至BootStrap ClassLoader,若还无法加载,则由自身加载,若祖先能加载则由祖先加载。因此,如图6所示,本申请实施例则扩展了双亲委派模型,App ClassLoader只加载JAVA的基础包,执行器和组件包的加载则分别由执行器ClassLoader和组件ClassLoader去完成。这两种类加载器的父加载器为AppClassLoader,所以他们的关系类似于兄弟关系。因为App ClassLoader只加载基础包,这就使得组件和执行器在使用双亲委派模型加载类时无法通过App ClassLoader加载,只能由各自的ClassLoader完成加载动作。使组件与组件、组件与执行器做到类隔离、运行在各自的安全沙箱中。安全沙箱使得某一个组件的更新、修改、局部错误不影响全局,组件对外开放能力强。同时,所述抽取组件、所述转换组件和所述加载组件还具备热插拔和动态更新特性。
基于同一发明构思,本申请还提供了与实施例一中的方法对应的装置,详见实施例二。
实施例二
如图7所示,在本实施例中提供了一种基于数据管道和安全沙箱的ETL装置,包括:
启动模块,用于启动执行器,具体是使用执行器ClassLoader加载执行器;
执行器,用于接收前端的任务报文信息,根据任务报文信息,提取出抽取、转换和加载对应的组件编码,并根据所述组件编码分别实例化出抽取组件、转换组件和加载组件;并通过无锁的内存队列构建所述抽取组件、所述转换组件和所述加载组件之间的数据管道,从而构建ETL拓扑实例;其中,所述抽取组件、所述转换组件和所述加载组件是由实现ETL功能的单组件解耦而成的,是独立且可复用的组件,并能按业务场景自由对接;
ETL拓扑实例,用于启动数据采集,数据通过所述数据管道传输,依次由所述抽取组件、所述转换组件和所述加载组件进行抽取、转换和加载,实现中间数据不落地,且数据边生产边消费;其中,
所述数据的结构为经过封装改造的数组,即利用缓存行填充、CAS原子操作,实现无锁的内存队列;
整个ETL过程的类加载是采用扩展的双亲委派模型进行,App ClassLoader只加载JAVA的基础包,执行器和组件包的加载则分别由执行器ClassLoader和组件ClassLoader去完成,且所述执行器ClassLoader和所述组件ClassLoader的父加载器均为AppClassLoader,使所述执行器、所述抽取组件、所述转换组件和所述加载组件做到类隔离,运行在各自独立的安全沙箱中。
其中,作为本实施例的一种更优或更为具体的实现方式,所述抽取组件为Reader类组件,所述转换组件为Transform类组件,所述加载组件为Writer类组件,抽取组件只负责抽取、转换组件只负责转换、加载组件只负载加载,职责分明,使得Reader、Transform、Writer组件可以按业务场景自由对接。例如,可以组合出如下一些业务场景:hdfs-reader->transform->hive-writer、mysql-reader->transform->hive-writer、hdfs-reader->transform->mysql-writer。
所述数据管道还支持并行写入和并行消费。
所述抽取组件、所述转换组件和所述加载组件还具备热插拔和动态更新特性。
由于本发明实施例二所介绍的装置,为实施本发明实施例一的方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。
基于同一发明构思,本申请提供了实施例一对应的电子设备实施例,详见实施例三。
实施例三
本实施例提供了一种电子设备,如图8所示,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,可以实现实施例一中任一实施方式。
由于本实施例所介绍的电子设备为实施本申请实施例一中方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
基于同一发明构思,本申请提供了实施例一对应的存储介质,详见实施例四。
实施例四
本实施例提供一种计算机可读存储介质,如图9所示,其上存储有计算机程序,该计算机程序被处理器执行时,可以实现实施例一中任一实施方式。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:将用于实现ETL功能的单组件解耦生成独立且可复用的组件,分别用于抽取、转换和加载,组件具备原子性,能按业务场景自由对接,从而构建了面向标准接口的组件程序架构;利用ClassLoader的特性,扩展双亲委派模型,为组件运行线程、框架运行主线程提供安全的沙箱环境,使组件与组件、组件与框架做到类隔离,任一个组件的更新、修改、局部错误均不影响全局;数据采用数组结构,再通过无锁的内存队列构建高性能的数据管道,使数据传输不落地,数据边生产边消费,提升任务的采集效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置或***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (10)
1.一种基于数据管道和安全沙箱的ETL方法,其特征在于:包括下述步骤:
S1、通过启动模块启动执行器;
S2、执行器接收前端的任务报文信息,根据任务报文信息,提取出抽取、转换和加载对应的组件编码,并根据所述组件编码分别实例化出抽取组件、转换组件和加载组件,并通过无锁的内存队列构建所述抽取组件、所述转换组件和所述加载组件之间的数据管道,从而构建ETL拓扑实例;其中,
所述抽取组件、所述转换组件和所述加载组件是由实现ETL功能的单组件解耦而成的,是独立且可复用的组件,并能按业务场景自由对接;
S3、所述ETL拓扑实例启动数据采集,数据通过所述数据管道传输,依次由所述抽取组件、所述转换组件和所述加载组件进行抽取、转换和加载,实现中间数据不落地,且数据边生产边消费;所述数据的结构为经过封装改造的数组,即利用缓存行填充、CAS原子操作,实现无锁的内存队列;
其中,整个ETL过程的类加载是采用扩展的双亲委派模型进行,App ClassLoader只加载JAVA的基础包,执行器和组件包的加载则分别由执行器ClassLoader和组件ClassLoader去完成,且所述执行器ClassLoader和所述组件ClassLoader的父加载器均为AppClassLoader,使所述执行器、所述抽取组件、所述转换组件和所述加载组件做到类隔离,运行在各自独立的安全沙箱中。
2.根据权利要求1所述的基于数据管道和安全沙箱的ETL方法,其特征在于:所述抽取组件为Reader类组件,所述转换组件为Transform类组件,所述加载组件为Writer类组件。
3.根据权利要求1所述的基于数据管道和安全沙箱的ETL方法,其特征在于:所述数据管道还支持并行写入和并行消费。
4.根据权利要求1所述的基于数据管道和安全沙箱的ETL方法,其特征在于:所述抽取组件、所述转换组件和所述加载组件还具备热插拔和动态更新特性。
5.一种基于数据管道和安全沙箱的ETL装置,其特征在于:包括:
启动模块,用于启动执行器;
执行器,用于接收前端的任务报文信息,根据任务报文信息,提取出抽取、转换和加载对应的组件编码,并根据所述组件编码分别实例化出抽取组件、转换组件和加载组件,并通过无锁的内存队列构建所述抽取组件、所述转换组件和所述加载组件之间的数据管道,从而构建ETL拓扑实例;其中,
所述抽取组件、所述转换组件和所述加载组件是由实现ETL功能的单组件解耦而成的,是独立且可复用的组件,并能按业务场景自由对接;
ETL拓扑实例,用于启动数据采集,数据通过所述数据管道传输,依次由所述抽取组件、所述转换组件和所述加载组件进行抽取、转换和加载,实现中间数据不落地,且数据边生产边消费;所述数据的结构为经过封装改造的数组,即利用缓存行填充、CAS原子操作,实现无锁的内存队列;
其中,整个ETL过程的类加载是采用扩展的双亲委派模型进行,App ClassLoader只加载JAVA的基础包,执行器和组件包的加载则分别由执行器ClassLoader和组件ClassLoader去完成,且所述执行器ClassLoader和所述组件ClassLoader的父加载器均为AppClassLoader,使所述执行器、所述抽取组件、所述转换组件和所述加载组件做到类隔离,运行在各自独立的安全沙箱中。
6.根据权利要求5所述的基于数据管道和安全沙箱的ETL装置,其特征在于:所述抽取组件为Reader类组件,所述转换组件为Transform类组件,所述加载组件为Writer类组件。
7.根据权利要求5所述的基于数据管道和安全沙箱的ETL装置,其特征在于:所述数据管道还支持并行写入和并行消费。
8.根据权利要求5所述的基于数据管道和安全沙箱的ETL装置,其特征在于:所述抽取组件、所述转换组件和所述加载组件还具备热插拔和动态更新特性。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于:所述处理器执行所述程序时实现如权利要求1至4任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:该程序被处理器执行时实现如权利要求1至4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011499040.7A CN112685483B (zh) | 2020-12-17 | 2020-12-17 | 基于数据管道和安全沙箱的etl方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011499040.7A CN112685483B (zh) | 2020-12-17 | 2020-12-17 | 基于数据管道和安全沙箱的etl方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112685483A CN112685483A (zh) | 2021-04-20 |
CN112685483B true CN112685483B (zh) | 2022-06-07 |
Family
ID=75448965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011499040.7A Active CN112685483B (zh) | 2020-12-17 | 2020-12-17 | 基于数据管道和安全沙箱的etl方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685483B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113726588B (zh) * | 2021-11-04 | 2022-01-04 | 树根互联股份有限公司 | 数据集成方法、***及服务器 |
CN114217586A (zh) * | 2021-12-13 | 2022-03-22 | 东软集团股份有限公司 | 数据采集方法、装置、存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388844A (zh) * | 2008-11-07 | 2009-03-18 | 东软集团股份有限公司 | 一种数据流程的处理方法和*** |
CN104679482A (zh) * | 2013-11-27 | 2015-06-03 | 北京拓尔思信息技术股份有限公司 | 基于osgi的etl处理装置及方法 |
CN104834742A (zh) * | 2015-05-20 | 2015-08-12 | 东华大学 | 一种基于sca的etl架构管理方法 |
CN110795480A (zh) * | 2019-10-09 | 2020-02-14 | 北京趣拿软件科技有限公司 | 交通运营数据的处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9244987B2 (en) * | 2012-05-31 | 2016-01-26 | Cellco Partnership | ETL data transit method and system |
-
2020
- 2020-12-17 CN CN202011499040.7A patent/CN112685483B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388844A (zh) * | 2008-11-07 | 2009-03-18 | 东软集团股份有限公司 | 一种数据流程的处理方法和*** |
CN104679482A (zh) * | 2013-11-27 | 2015-06-03 | 北京拓尔思信息技术股份有限公司 | 基于osgi的etl处理装置及方法 |
CN104834742A (zh) * | 2015-05-20 | 2015-08-12 | 东华大学 | 一种基于sca的etl架构管理方法 |
CN110795480A (zh) * | 2019-10-09 | 2020-02-14 | 北京趣拿软件科技有限公司 | 交通运营数据的处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
Modeling and Supporting ETL Processes via a;Orlando Belo、Alfredo Cuzzocrea、Bruno Oliveira;《2014 IEEE 26th International Conference on Tools with Artificial Intelligence》;20141215;全文 * |
一种基于SCA的ETL架构的设计和实现;易先海;《计算机应用与软件》;20150415;第32卷(第4期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112685483A (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112685483B (zh) | 基于数据管道和安全沙箱的etl方法、装置、设备和介质 | |
US9002802B2 (en) | High throughput, reliable replication of transformed data in information systems | |
US5864864A (en) | Method and apparatus for providing transparent persistent data support to foreign data types | |
US8463724B2 (en) | Computer archive traversal | |
Fu et al. | Reasoning about optimistic concurrency using a program logic for history | |
CN102968339B (zh) | 基于云计算架构实现复杂事件处理的***及其方法 | |
US20180101564A1 (en) | Transaction compensation for single phase resources | |
US11562024B2 (en) | Method and system for traversing an object graph using traversal context objects | |
JP2005063449A (ja) | オブジェクトからオブジェクトへのJavaネイティブインタフェースマッピングの方法及び装置 | |
Breg et al. | Java virtual machine support for object serialization | |
CN110086602A (zh) | 基于gpu的sm3密码散列算法的快速实现方法 | |
US20180052780A1 (en) | Self-Ordering Buffer | |
CN116680209A (zh) | 基于wasm的多智能合约实例管理方法 | |
JP2020057362A (ja) | 情報処理装置、情報処理回路、情報処理システム及び情報処理方法 | |
US8752075B1 (en) | Method for data transport | |
GB2539898B (en) | A data handling method | |
US8239837B2 (en) | Remotely handling exceptions through STAF | |
WO2007006124A1 (en) | Container-level transaction management system and method therefor | |
US20200183749A1 (en) | Systems and methods for accelerating data operations by utilizing native memory management | |
CN113835904A (zh) | 一种远程过程调用控制方法、装置、设备及存储介质 | |
Fatourou et al. | Linearizable wait-free iteration operations in shared double-ended queues | |
CN111241346A (zh) | 一种对象序列化方法、装置、机器可读介质以及*** | |
US20050160407A1 (en) | Memory management method for dynamic conversion type emulator | |
CN117076095B (zh) | 一种基于dag的任务调度方法、***、电子设备及存储介质 | |
CN112433869B (zh) | 面向软件超结点的OpenCL编程框架构建方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |