CN111694888A - 基于微服务架构的分布式etl数据交换系统及方法 - Google Patents

基于微服务架构的分布式etl数据交换系统及方法 Download PDF

Info

Publication number
CN111694888A
CN111694888A CN202010537514.6A CN202010537514A CN111694888A CN 111694888 A CN111694888 A CN 111694888A CN 202010537514 A CN202010537514 A CN 202010537514A CN 111694888 A CN111694888 A CN 111694888A
Authority
CN
China
Prior art keywords
data
node
flow
etl
execution
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.)
Pending
Application number
CN202010537514.6A
Other languages
English (en)
Inventor
陆才慧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guyun Technology Guangzhou Co ltd
Original Assignee
Guyun Technology Guangzhou Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guyun Technology Guangzhou Co ltd filed Critical Guyun Technology Guangzhou Co ltd
Priority to CN202010537514.6A priority Critical patent/CN111694888A/zh
Publication of CN111694888A publication Critical patent/CN111694888A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明属于计算机技术领域,公开了一种基于微服务架构的分布式ETL数据交换系统及方法,依托一个基于微服务架构的平台,采用流程调度机、流程实例注册中心、无状态可动态产生实例的ETL流程执行机,通过前后端分离架构进行构建,一种可以动态弹性伸缩的ETL数据交换平台,实现了ETL流程的故障自动转移、流程实例自动缩减、流程状态统一注册的功能,当服务器资源过剩时容器编排平台可以快速回收服务器资源,能够节省ETL系统所占用的服务器资源及内存,能够大幅提升企业服务器资源的利用率,节约成本;能够节约内存占用,提升ETL流程对数据的处理能力,提高ETL流程执行和调度效率,同时提升管理与监控方面的效率,增加流程调度可靠性。

Description

基于微服务架构的分布式ETL数据交换系统及方法
技术领域
本发明属于计算机技术领域,具体涉及一种基于微服务架构的分布式ETL数据交换系统及方法。
背景技术
计算机技术涉及范围越来越广泛,已普遍应用到工业生产、日常生活、公共管理等场所,而随着大数据在各行各业的应用,数据采集,清洗、脱敏等使用需求越来越多,例在企业业务系统中的众多数据比较分散,各业务系统之间的数据均需要实现快速互联互通,现有技术中的企业业务系统主要采用的是代码编写或者采用第三方开源的工具进行数据交换和清洗,主流的ETL工具或技术主要基于单机或C/S等单体架构的模式进行开发或运行,存在数据并发量不高、资源有效利用率低、单个节点出现故障时不能及时转移到其他节点运行、同时不能基于Docker等容器化技术实现编排和弹性调度、不能分布式进行调度导致当ETL流程较多时会造成服务器内存占用过多从而造成内存溢出等问题,同时某一个流程出现问题时可能会影响其他流程停止调度;虽然现在也有一些ETL把调度机单独独立出来,但是这种架构的流程执行节点数是固定的,系统不能根据流程的并发情况、CPU的使用情况及时动态的增加节点数,当服务器资源利用率不高时也不能及时回收节点,造成计算资源的浪费,效率低。
发明内容
为了解决现有技术存在的上述问题,本发明目的在于提供一种基于微服务架构的分布式ETL数据交换系统及方法,克服上述现有技术缺点,节约内存占用,提升ETL流程对数据的处理能力,提高ETL流程执行和调度效率,同时提升管理与监控方面的效率,增加流程调度可靠性。
本发明所采用的技术方案为:
一种基于微服务架构的分布式ETL数据交换系统,其特征在于:
包括流程调度机、流程实例注册中心、无状态可动态产生实例的ETL流程执行机,流程调度机、流程实例注册中心、无状态可动态产生实例的ETL流程执行机依托基于微服务架构的平台,构成前后端分离架构;
包括有数据源管理模块、流程监控模块、数据流程模块、元数据管理模块、规则管理模块、流程调度器配置模块、ETL流程引擎模块、ETL调度机模块、ETL注册中心模块;
数据源管理模块用于链接各种关系数据库和非关系数据库;流程监控模块用于监控正在调度和运行中的流程并完成流程运行状态的可视化显示和回放;数据流程模块用以对数据转换操作进行可视化拖、拉、拽的方式构建一个ETL的数据清洗流程;元数据管理模块用以对数据库中的数据库表、视图的元数据进行管理;规则管理模块用以对数据转换、清洗过程中需要进行业务逻辑处理的统一规则创建和管理;流程调度器配置模块与ETL流程关联,用来设置流程的运行频率和调度顺序;ETL流程引擎模块与ETL流程关联,用来根据ETL流程的JSON描述数据中的步骤来进行节点构建并进行推进执行把数据流从一个节点传递到下一个节点;ETL调度机模块用以对ETL的流程执行机进行统一调度;ETL注册中心模块用以对ETL的流程执行机进行统一注册和服务实例发现;
进一步地,一较佳技术方案中,所述的数据源管理模块包括创建数据源、查看数据源列表、数据监听器管理、数据库驱动管理;
所述的ETL流程监控模块包括流程运行情况统计信息、运行失败流程信息、正常结束流程信息、待审批流程数据信息;
所述的ETL流程设计模块包括若干数据处理节点:数据库表节点、元数据模型节点、Restful API节点、缓冲库节点、Excel节点、Kafka节点、ElasticSearch节点、FTP节点、HTTP文件上传下载节点、文件本文件节点、数据生成器、增量数据运算节点、字段值运算节点、Union All节点、多表Join合并、数据排序节点、GroupBy分组节点、数据去重合并节点、SQL执行节点、数据加解密节点、字段值映射节点、表字段映射节点;
所述的元数据管理模块包括元数据名称、关联数据源、数据库表、主键ID、元数据唯一ID;
所述的规则管理模块包括规则名称、规则编号、规则可见范围、规则逻辑代码;
所述的流程调度器配置模块包括任务名称、定时表达式、调度状态、下次调时间;
所述的ETL流程引擎模块包括启动调度、暂停调度、节点数据持久化、流程终止、流程结束、流程等待、定时启动;
所述的ETL调度机模块包括负载均衡算法、调度命令发起;
所述的ETL注册中心模块包括服务实例的注册、服务实例的下线、服务实例的健康状况检查;
本发明还涉及一种根据上述基于微服务架构的分布式ETL数据交换系统的方法,其特征在于:
包括以下步骤:
第一步,进行图形化ETL流程设计;
第二步,根据设计的流程JSON描述数据加载到内存中进行缓存并通知调度中心流程已准备可以接受调度指令;
第三步,流程执行节点读取ETL流程的JSON模型数据并加载各转换节点的驱动逻辑Class到系统中;
第四步,调度中心根据流程执行的表达式进行任务启动,从注册中心查找所有可用的流程执行节点并根据资源消耗情况进行任务分配,如果分配失败则立即转移到下一个节点执行,直到找到可用的ETL流程执行节点,如果节点数不够则执行容器编排平台的API申请产生新的流程执行机节点;
第五步,流程执行机根据JSON中描述的路由网络图和路由的条件配置来计算节点的前后可能关联的转换节点;
第六步,流程执行机在内存中逐个执行节点中指定的数据源和数据库表并执行相应的SQL语句,把读取到的数据流存入到内存变量中并传入下一节点作为输入数据流;
第七步,流程执行机根据流入的数据流对数据进行清洗、类型转换操作并生成update sql写入到目标数据源中;
第八步,流程执行机实时记录数据传输过程中出现的问题,如果流程终止立即发送消息给统一的调度中心和注册中心,调度中心根据错误原因决定是不是转移到另一个节点上进行执行。
进一步地,一较佳技术方案中,第一步具体包括以下步骤:
1a.创建一个ETL流程;
1b.在该新建的流程中进行数据转换配置并根据任务顺序进行流程图的绘制;
1c.根据用户的操作,将转换节点拖拽到流程图中并使用路由线按照执行的先后顺序进行链接;
1e.用户点击各个数据输入和输出节点进行数据源、数据库表、SQL语句、输入字段、输出字段的设置;
1d.保持ETL流程图形数据并指定一个定时调度的表达式,通知流程执行机加载流程数据;
进一步地,一较佳技术方案中,第二步具体包括以下步骤:
2a.读取ETL流程的JSON字符串转为换JSON对像加载到内存中;
2b.检测载入流程有没有语法或逻辑错误,没有则标识准备完成;
2c.发送流程准备完成标识给注册中心和调度中心,调度中心接收到流程准备完成的通知后加入调度执行计划中;
进一步地,一较佳技术方案中,第三步具体包括以下步骤:
3a.读取ETL流程的JSON数据模型并解析为JSON对像并进行数据预处理;
3b.分析模型中所有数据转换节点的类型并加载各节点的驱动Class到内存中;
进一步地,一较佳技术方案中,第四步具体包括以下步骤:
4a.调度中心根据定时表达式调度流程执行机进行流程任务的执行;
4b.调度中心从注册中心获取所有可用的流程执行机节点;
4c.根据流程执行机的节点资源利用情况决定由最小负载的执行机进行流程运行;
4d.如果没有找到可用的流程执行机则调用容器编排平台的API申请增加节点;
4e.再次计算可用节点数,如果找到则发送流程启动命令给流程执行机;
进一步地,一较佳技术方案中,第五步具体包括以下步骤:
5a.根据转换节点的类型执行Class驱动的统一start()方法;
5b.获取转换节点驱动执行方法的返回标识结果并存入流程实例的全局变量中;
5c.调用转换节点中配置的断言逻辑如果数据写入失败是否终止流程执行还是跳过节点;
5d.根据节点执行的结果决定数据流向那一个后继节点;
进一步地,一较佳技术方案中,第六步具体包括以下步骤:
6a.执行数据输入的节点的SQL语句获取数据输入流;
6b.执行数据输出节点的SQL语句把数据写入到目标数据库表中;
6c.记录读取和传输的数据量包括成功和失败的数据量;
进一步地,一较佳技术方案中,第七步具体包括以下步骤:
7a.对输入数据流的类型进行检查,根据节点中设置的类型进行数据转换;
7b.对输出的数据库表中的字段类型进行读取并与输入流的数据类型进行比较,如果类型不匹配进行数据类型转换,如果转换失败则标识为脏数据;
进一步地,一较佳技术方案中,第八步具体包括以下步骤:
8a.判断流程是否执行成功;
8b.把流程是否执行成功的消息反馈给调度中心和注册中心;
进一步地,一较佳技术方案中,ETL流程图形的设计遵循BPMN2.0规范;
进一步地,一较佳技术方案中,ETL流程引擎通过Java代码实现。
本发明的有益效果为:
提供了一种基于微服务架构的分布式ETL数据交换系统及方法,依托一个基于微服务架构的平台,采用流程调度机、流程实例注册中心、无状态可动态产生实例的ETL流程执行机,通过前后端分离架构进行构建,一种可以动态弹性伸缩的ETL数据交换平台,按照微服务的方式将每个ETL流程和执行节点划分成为一个的服务实例节点,每个微服务实例节点可以完成自已独立的流程执行、状态反馈等高内聚的功能,节点的状态会实时报告给统一的服务注册中心,调度机根据注册中心可用的节点和健康状况来对流程执行机进行调度;作为统一的ETL流程调度引擎,实现了ETL流程的故障自动转移、流程实例自动缩减、流程状态统一注册的功能,将ETL调度机进行独立成为一个微服务实例,以实现对流程执行机的统一调度,当流程调度机本身出现故障时容器编排平台能迅速再次产生一个流程调度机的微服务实例,当服务器资源过剩时容器编排平台可以快速回收服务器资源,能够节省ETL系统所占用的服务器资源及内存,特别是对于那些只在晚上才运行的ETL批处理流程,白天可以动态回收服务器资源,晚上则把空闲的服务器资源分配给ETL流程执行机,能够大幅提升企业服务器资源的利用率,节约成本;
在ETL流程图形的设计上遵循BPMN2.0规范,有利于熟悉工作流的工作人员快速进行ETL流程的设计,在ETL流程的监控上实现了完全可视化的数据流转回放能力,可视化的数据追朔能力,节点调用实时监控能力,同时可以统计ETL流程的平均性能、运行次数、失败次数、插入的数据量、更新的数据量、删除的数据量;能够节约内存占用,提升ETL流程对数据的处理能力,提高ETL流程执行和调度效率,同时提升管理与监控方面的效率,增加流程调度可靠性。
附图说明
图1是本发明实施例一基于微服务架构的分布式ETL数据交换系统结构示意图;
图2是本发明实施例一基于微服务架构的分布式ETL数据交换系统流程示意图;
图3是本发明实施例一基于微服务架构的分布式ETL数据交换系统原理示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
如图1所示,本发明一较佳实施方式的实例一中,提供一种基于微服务架构的分布式ETL数据交换系统,首先选择一个基于微服务架构的平台,通过前后端分离架构进行构建可以动态弹性伸缩的ETL数据交换平台,按照微服务的方式将每个ETL流程和执行节点划分成为一个的服务实例节点;设置一个流程调度机、一个流程实例注册中心,并列设置N个流程执行机,分别为流程执行机1、流程执行机2、流程执行机3、流程执行机4、流程执行机5……流程执行机N,流程调度机与流程实例注册中心双向通讯连接,流程调度机单向通讯连接至前端的N个流程执行机,并能够对每个流程执行机分别下发流程运行命令;流程实例注册中心双向通讯连接至N个流程执行机,流程实例注册中心能够收集获取每个流程执行机性能数据,N个流程执行机分别向流程实例注册中心报告状态。
如图2所示,通过浏览器进入ETL统一UI的管理界面,分别执行数据源管理、流程监控、数据流程、元数据管理、规则管理、流程调度器配置、ETL流程引擎、ETL调度机、ETL注册中心等模块,根据流程与业务数据分别设置流程配置DB、业务数据DB两个数据库;
本实施例中设置9个操作模块,具体如下:
数据源管理模块,用于链接各种关系数据库和非关系数据库;
流程监控模块,用于监控正在调度和运行中的流程并完成流程运行状态的可视化显示和回放;
数据流程模块,用以对数据转换操作进行可视化拖、拉、拽的方式构建一个ETL的数据清洗流程;
元数据管理模块,用以对数据库中的数据库表、视图的元数据进行管理;
规则管理模块,用以对数据转换、清洗过程中需要进行业务逻辑处理的统一规则创建和管理;
流程调度器配置模块,与所述的ETL流程所关联,用来设置流程的运行频率和调度顺序;
ETL流程引擎模块,与所述的ETL流程所关联,用来根据ETL流程的JSON描述数据中的步骤来进行节点构建并进行推进执行把数据流从一个节点传递到下一个节点;
ETL调度机模块,用以对ETL的流程执行机进行统一调度;
ETL注册中心模块,用以对ETL的流程执行机进行统一注册和服务实例发现。
本实施例基于微服务架构和分布式调度思路来构建一种可以动态弹性伸缩的ETL数据交换平台,把ETL流程和执行节点按照微服务的方式把ETL流程划分成为一个一个的服务实例节点,每个微服务实例节点可以完成自已独立的流程执行、状态反馈等高内聚的功能。
通过分布式技术的应用可以解决海量流程的调度和数据处理,同时在单个节点出现故障时系统能通过注册中心及时发现故障节点并把任务迅速交由其他节点进行调度保证数据流程调度的延续性。通过Docker等容器化技术的应用可以实现节点的自动扩充和缩减,ETL的流程引擎则采用BPMN2.0规范进行设计把BPMN的流程执行引擎应用到ETL流程中实现数据流的处理。
进一步地,本实施例各模块详细描述如下:
1)数据源管理模块
数据源管理模块主要是对ETL中用到的所有数据源进行统一管理和链接,通过数据库链接池技术实现对多种关系数据库的链接维护,对于NOSQL数据库则根据不同的数据库驱动进行数据读取和写入的统一包装。
2)ETL流程监控模块
ETL流程监控模块主要对正在运行的流程或已经结束并持久化的流程进行监控和分析,统计成功和失败的次数以及每个流程的平均执行时间,主要用来快速定位每个流程的执行情况,监控数据中包含流程执行成功传输的数据、失败传输的数据、流程开始时间、流程结束时间、执行流程所在的服务器IP、流程执行实生的日志数据等。
3)ETL流程设计模块
ETL流程设计模块主要通过图形化的方式把数据转换节点通过拖、拉、拽的方式拉到入图形绘制区域,再根据数据交换的逻辑如:串行执行、并行执行、异步并行执行等关系使用路由线进行链接,每个节点需要指定要调用数据源、数据库表、SQL语句、输入字段、输出字段等的配置,完成流程图的绘制后把流程图形保存为一个JSON数据的字符串并与ETL流程执行引擎模块相关联。
4)元数据管理模块
元数据管理模块主要是事先对ETL中可能用到的数据库表或视图中的信息进行管理,通过把数据库表的元数据读取到平台中来进行统一查看,在ETL流程设计时可以不依赖于数据库中的信息。
5)规则管理模块
ETL流程中各节点之间存在数据转换、清洗、脱敏、补全等逻辑以及业务代码逻辑,通过统一的规则管理模块实现业务逻辑代码的统一管理,规则代码使用纯Java语法进行编写,规则管理包含:规则名称、规则类型、规则代码、创建时间、是否公开规则、创建人等信息,规则管理模块与ETL流程模块进行关联选择。
6)调度器配置模块
调度器配置主要实现对ETL流程设定一定的执行频率和间隔时间,流程调度机根据此设置来定时调度流程执行机运行ETL流程,调度器模块包含:调度名称、调度时间表达式、调度可用状态、创建人、创建时间等信息。
7)ETL流程执行引擎模块
ETL流程执行引擎模块主要负责接收流程调度机的流程运行命令,负责执行具体的ETL流程并传输数据到目标表中,首先根据流程唯一ID加载流程模型的JSON数据到内存中,并使用JSON对像解析成为BPMN的流程网络模型,流程引擎再根据网络的链接顺序执行节点绑定的驱动Class中的方法:
7.1接收调度机的启动命令,启动ETL流程初始化相关的变量数据;
7.2从内存中查找流程的JSON对像是否存在,如果流程模型存在则立即创建流程主实例ProcessEngine对像;
7.3查找ETL流程的开始节点,如果流程没有开始节点则提示错误,如果存在则返回节点的后续所有网络连接线的配置对像;
7.4如果路由线的后续节点存在则立即查找开始节点后继的路由线;
7.5计算路由条件中绑定的计算逻辑,如果逻辑成立则找到目标节点并加载
目标节点的驱动;
7.6执行目标节点的业务驱动逻辑并把节点的状态数据保存到内存的Map对像中;
7.7节点执行成功重复步骤7.4-7.6即可完成整个流程节点数据的读取、写入操作、直接所有的数据读取和写入完毕才结束整个流程的运行;
7.8把流程最终的执行结果报告给流程注册中心,注册中心更新流程的资源信息和流程执行性能信息。
7.9流程调度机根据流程反馈的结果来计算此流程执行机的运行效率情况。
ETL流程引擎通过Java代码实现,其接口逻辑和方法写信代码如下:
Figure BDA0002537561300000111
Figure BDA0002537561300000121
Figure BDA0002537561300000131
Figure BDA0002537561300000141
Figure BDA0002537561300000151
Figure BDA0002537561300000161
Figure BDA0002537561300000171
Figure BDA0002537561300000181
8)ETL流程调度机模块
ETL流程调度机为独立的一个微服务实例节点,调度机本身也注册到统一的注册中心中,当调度机本身发生故障时注册中心会通知容器编排平台重新产生一个调度机实例或者在所有的流程执行机中选举一个新的流程调度机出来,流程调度机的主要作用是根据流程执行的机的运行效率根据负载算法来决定由那一台最佳的流程执行机来运行流程。
9)ETL流程注册中心模块
ETL流程注册中心主要是用来统一发现和维护所有可用的流程执行机的位置主要包括IP地址、端口号、流程当前的执行效率,注册中心会把这些信息实时反馈给流程调度机,流程调度机根据注册中心的信息来决定由那个流程执行机来运行流程。
本实施例的系统必须本身是一个基于微服务架构的平台,采用流程调度机、流程实例注册中心、无状态可动态产生实例的ETL流程执行机组成,整个系统实现前后端分离架构进行构建,考虑到大数据场景下ETL平台可能会有大量的ETL流程在同时运行(可能同时超过上万个调度流程),而且被调度的ETL流程可能存在不稳定或数据库链接失败等情况出现,所以作为统一的ETL流程调度引擎本发明及方法实现了ETL流程的故障自动转移、流程实例自动缩减、流程状态统一注册的功能。
通过把ETL调度机进行独立成为一个微服务实例来实现对流程执行机的统一调度,当流程调度机本身出现故障时容器编排平台很容易能再次产生一个流程调度机的微服务实例。
通过把ETL流程执行节点看作是一个一个独立的无状态的微服务实例节点,节点的状态会实时报告给统一的服务注册中心,调度机根据注册中心可用的节点和健康状况来对流程执行机进行调度。
在ETL流程图形的设计上遵循BPMN2.0规范,这样有利于原来就熟悉工作流的人员可以快速的进行ETL流程的设计。在ETL流程的监控上实现了完全可视化的数据流转回放能力,可视化的数据追朔能力,节点调用实时监控能力,同时可以统计ETL流程的平均性能、运行次数、失败次数、插入的数据量、更新的数据量、删除的数据量。
如图3所示,本实施例具体操作步骤如下:
(1)进行图形化ETL流程设计。
(2)根据设计的流程JSON描述数据加载到内存中进行缓存并通知调度中心流程已准备可以接受调度指令。
(3)流程执行节点读取ETL流程的JSON模型数据并加载各转换节点的驱动逻辑Class到系统中。
(4)调度中心根据流程执行的表达式进行任务启动,从注册中心查找所有可用的流程执行节点并根据资源消耗情况进行任务分配,如果分配失败则立即转移到下一个节点执行,直到找到可用的ETL流程执行节点,如果节点数不够则执行容器编排平台的API申请产生新的流程执行机节点。
(5)流程执行机根据JSON中描述的路由网络图和路由的条件配置来计算节点的前后可能关联的转换节点。
(6)流程执行机在内存中逐个执行节点中指定的数据源和数据库表并执行相应的SQL语句,把读取到的数据流存入到内存变量中并传入下一节点作为输入数据流。
(7)流程执行机根据流入的数据流对数据进行清洗、类型转换操作并生成updatesql写入到目标数据源中。
(8)流程执行机实时记录数据传输过程中出现的问题,如果流程终止立即发送消息给统一的调度中心和注册中心,调度中心根据错误原因决定是不是转移到另一个节点上进行执行。
采用了本发明的基于微服务架构的分布式ETL数据交换系统及方法,通过图形化的方式快速设计ETL流程并通过DevOps手段快速部署生成ETL的流程服务实例,服务实例上线后可快速被注册中心发现,流程调度机根据发现的服务实例发送流程运行命令,相比采用传统单体架构的ETL系统本平台具有分布式部署、无状态微服务实例运行特点,当某一个流程节点出现故障时容器平台可以快速的产生一个新的ETL流程执行实例出来,当服务器资源过剩时容器编排平台可以快速回收服务器资源,这样可以很好的节省ETL系统所占用的服务器资源及内存,特别是对于那些只在晚上才跑的ETL批处理流程,白天可以动态回收服务器资源,晚上则把空闭的服务器资源分配给ETL流程执行机,这样可以大幅提升企业服务器资源的利用率,大幅节省成本。
进一步地,在步骤(1)中具体包括以下步骤:
1.1创建一个ETL流程;
1.2在该新建的流程中进行数据转换配置并根据任务顺序进行流程图的绘制;
1.3根据用户的操作,将转换节点拖拽到流程图中并使用路由线按照执行的先后顺序进行链接;
1.4用户点击各个数据输入和输出节点进行数据源、数据库表、SQL语句、输入字段、输出字段的设置;
1.5保持ETL流程图形数据并指定一个定时调度的表达式,通知流程执行机加载流程数据;
步骤(2)具体包括以下步骤:
2.1读取ETL流程的JSON字符串转为换JSON对像加载到内存中;
2.2检测载入流程有没有语法或逻辑错误,没有则标识准备完成;
2.3发送流程准备完成标识给注册中心和调度中心,调度中心接收到流程准备完成的通知后加入调度执行计划中;
步骤(3)具体包括以下步骤:
3.1读取ETL流程的JSON数据模型并解析为JSON对像并进行数据预处理;
3.2分析模型中所有数据转换节点的类型并加载各节点的驱动Class到内存中;
步骤(4)具体包括以下步骤:
4.1调度中心根据定时表达式调度流程执行机进行流程任务的执行;
4.2调度中心从注册中心获取所有可用的流程执行机节点;
4.3根据流程执行机的节点资源利用情况决定由最小负载的执行机进行流程运行;
4.4如果没有找到可用的流程执行机则调用容器编排平台的API申请增加节点;
4.5再次计算可用节点数,如果找到则发送流程启动命令给流程执行机;步骤(5)具体包括以下步骤:
5.1根据转换节点的类型执行Class驱动的统一start()方法;
5.2获取转换节点驱动执行方法的返回标识结果并存入流程实例的全局变量中;
5.3调用转换节点中配置的断言逻辑如果数据写入失败是否终止流程执行还是跳过节点;
5.4根据节点执行的结果决定数据流向那一个后继节点;
步骤(6)具体包括以下步骤:
6.1执行数据输入的节点的SQL语句获取数据输入流;
6.2执行数据输出节点的SQL语句把数据写入到目标数据库表中;
6.3记录读取和传输的数据量包括成功和失败的数据量;
步骤(7)具体包括以下步骤:
7.1对输入数据流的类型进行检查,根据节点中设置的类型进行数据转换;
7.2对输出的数据库表中的字段类型进行读取并与输入流的数据类型进行比较,如果类型不匹配进行数据类型转换,如果转换失败则标识为脏数据;
步骤(8)具体包括以下步骤:
8.1判断流程是否执行成功;
8.2把流程是否执行成功的消息反馈给调度中心和注册中心。
采用了本发明的基于微服务架构的分布式ETL数据交换系统及方法,其ETL流程的执行和调度效率大幅提升,同时带来管理和监控方面的效率提升,在大数据量的场景下通过Docker等容器化技术可以实现动态的资源利用,同时可把每个ETL流程独立成为一个微服务实例,通过DevOps技术可以实现ETL流程的设计、上线、运行、监控的全过程管理,大幅度的提升ETL流程对数据的处理能力,同时也提升了流程调度的可靠性,数据流程不会再因为某一个节点出现故障而终止调度的情况出现。
本发明不局限于上述可选实施方式,任何人在本发明的启示下都可得出其他各种形式的产品,但不论在其形状或结构上作任何变化,凡是落入本发明权利要求界定范围内的技术方案,均落在本发明的保护范围之内。

Claims (11)

1.一种基于微服务架构的分布式ETL数据交换系统,其特征在于:包括有数据源管理模块、流程监控模块、数据流程模块、元数据管理模块、规则管理模块、流程调度器配置模块、ETL流程引擎模块、ETL调度机模块、ETL注册中心模块;
所述数据源管理模块用于链接各种关系数据库和非关系数据库;流程监控模块用于监控正在调度和运行中的流程并完成流程运行状态的可视化显示和回放;数据流程模块用以对数据转换操作进行可视化拖、拉、拽的方式构建一个ETL的数据清洗流程;元数据管理模块用以对数据库中的数据库表、视图的元数据进行管理;规则管理模块用以对数据转换、清洗过程中需要进行业务逻辑处理的统一规则创建和管理;流程调度器配置模块与ETL流程关联,用来设置流程的运行频率和调度顺序;ETL流程引擎模块与ETL流程关联,用来根据ETL流程的JSON描述数据中的步骤来进行节点构建并进行推进执行把数据流从一个节点传递到下一个节点;ETL调度机模块用以对ETL的流程执行机进行统一调度;ETL注册中心模块用以对ETL的流程执行机进行统一注册和服务实例发现。
2.根据权利要求1所述基于微服务架构的分布式ETL数据交换系统,其特征在于:
所述的数据源管理模块包括创建数据源、查看数据源列表、数据监听器管理、数据库驱动管理;
所述的ETL流程监控模块包括流程运行情况统计信息、运行失败流程信息、正常结束流程信息、待审批流程数据信息;
所述的ETL流程设计模块包括若干数据处理节点:数据库表节点、元数据模型节点、Restful API节点、缓冲库节点、Excel节点、Kafka节点、ElasticSearch节点、FTP节点、HTTP文件上传下载节点、文件本文件节点、数据生成器、增量数据运算节点、字段值运算节点、Union All节点、多表Join合并、数据排序节点、GroupBy分组节点、数据去重合并节点、SQL执行节点、数据加解密节点、字段值映射节点、表字段映射节点;
所述的元数据管理模块包括元数据名称、关联数据源、数据库表、主键ID、元数据唯一ID;
所述的规则管理模块包括规则名称、规则编号、规则可见范围、规则逻辑代码;
所述的流程调度器配置模块包括任务名称、定时表达式、调度状态、下次调时间;
所述的ETL流程引擎模块包括启动调度、暂停调度、节点数据持久化、流程终止、流程结束、流程等待、定时启动;
所述的ETL调度机模块包括负载均衡算法、调度命令发起;
所述的ETL注册中心模块包括服务实例的注册、服务实例的下线、服务实例的健康状况检查。
3.根据权利要求1或2所述基于微服务架构的分布式ETL数据交换系统的方法,其特征在于:
包括以下步骤:
第一步,进行图形化ETL流程设计;
第二步,根据设计的流程JSON描述数据加载到内存中进行缓存并通知调度中心流程已准备可以接受调度指令;
第三步,流程执行节点读取ETL流程的JSON模型数据并加载各转换节点的驱动逻辑Class到系统中;
第四步,调度中心根据流程执行的表达式进行任务启动,从注册中心查找所有可用的流程执行节点并根据资源消耗情况进行任务分配,如果分配失败则立即转移到下一个节点执行,直到找到可用的ETL流程执行节点,如果节点数不够则执行容器编排平台的API申请产生新的流程执行机节点;
第五步,流程执行机根据JSON中描述的路由网络图和路由的条件配置来计算节点的前后可能关联的转换节点;
第六步,流程执行机在内存中逐个执行节点中指定的数据源和数据库表并执行相应的SQL语句,把读取到的数据流存入到内存变量中并传入下一节点作为输入数据流;
第七步,流程执行机根据流入的数据流对数据进行清洗、类型转换操作并生成updatesql写入到目标数据源中;
第八步,流程执行机实时记录数据传输过程中出现的问题,如果流程终止立即发送消息给统一的调度中心和注册中心,调度中心根据错误原因决定是不是转移到另一个节点上进行执行。
4.根据权利要求3所述基于微服务架构的分布式ETL数据交换系统的方法,其特征在于:
所述第一步具体包括以下步骤:
1a.创建一个ETL流程;
1b.在该新建的流程中进行数据转换配置并根据任务顺序进行流程图的绘制;
1c.根据用户的操作,将转换节点拖拽到流程图中并使用路由线按照执行的先后顺序进行链接;
1e.用户点击各个数据输入和输出节点进行数据源、数据库表、SQL语句、输入字段、输出字段的设置;
1d.保持ETL流程图形数据并指定一个定时调度的表达式,通知流程执行机加载流程数据。
5.根据权利要求3所述基于微服务架构的分布式ETL数据交换系统的方法,其特征在于:
所述第二步具体包括以下步骤:
2a.读取ETL流程的JSON字符串转为换JSON对像加载到内存中;
2b.检测载入流程有没有语法或逻辑错误,没有则标识准备完成;
2c.发送流程准备完成标识给注册中心和调度中心,调度中心接收到流程准备完成的通知后加入调度执行计划中。
6.根据权利要求3所述基于微服务架构的分布式ETL数据交换系统的方法,其特征在于:
所述第三步具体包括以下步骤:
3a.读取ETL流程的JSON数据模型并解析为JSON对像并进行数据预处理;
3b.分析模型中所有数据转换节点的类型并加载各节点的驱动Class到内存中。
7.根据权利要求3所述基于微服务架构的分布式ETL数据交换系统的方法,其特征在于:
所述第四步具体包括以下步骤:
4a.调度中心根据定时表达式调度流程执行机进行流程任务的执行;
4b.调度中心从注册中心获取所有可用的流程执行机节点;
4c.根据流程执行机的节点资源利用情况决定由最小负载的执行机进行流程运行;
4d.如果没有找到可用的流程执行机则调用容器编排平台的API申请增加节点;
4e.再次计算可用节点数,如果找到则发送流程启动命令给流程执行机。
8.根据权利要求3所述基于微服务架构的分布式ETL数据交换系统的方法,其特征在于:
所述第五步具体包括以下步骤:
5a.根据转换节点的类型执行Class驱动的统一start()方法;
5b.获取转换节点驱动执行方法的返回标识结果并存入流程实例的全局变量中;
5c.调用转换节点中配置的断言逻辑如果数据写入失败是否终止流程执行还是跳过节点;
5d.根据节点执行的结果决定数据流向那一个后继节点。
9.根据权利要求3所述基于微服务架构的分布式ETL数据交换系统的方法,其特征在于:
所述第六步具体包括以下步骤:
6a.执行数据输入的节点的SQL语句获取数据输入流;
6b.执行数据输出节点的SQL语句把数据写入到目标数据库表中;
6c.记录读取和传输的数据量包括成功和失败的数据量。
10.根据权利要求3所述基于微服务架构的分布式ETL数据交换系统的方法,其特征在于:
所述第七步具体包括以下步骤:
7a.对输入数据流的类型进行检查,根据节点中设置的类型进行数据转换;
7b.对输出的数据库表中的字段类型进行读取并与输入流的数据类型进行比较,如果类型不匹配进行数据类型转换,如果转换失败则标识为脏数据。
11.根据权利要求3所述基于微服务架构的分布式ETL数据交换系统的方法,其特征在于:
所述第八步具体包括以下步骤:
8a.判断流程是否执行成功;
8b.将流程是否执行成功的消息反馈给调度中心和注册中心。
CN202010537514.6A 2020-06-12 2020-06-12 基于微服务架构的分布式etl数据交换系统及方法 Pending CN111694888A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010537514.6A CN111694888A (zh) 2020-06-12 2020-06-12 基于微服务架构的分布式etl数据交换系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010537514.6A CN111694888A (zh) 2020-06-12 2020-06-12 基于微服务架构的分布式etl数据交换系统及方法

Publications (1)

Publication Number Publication Date
CN111694888A true CN111694888A (zh) 2020-09-22

Family

ID=72480924

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010537514.6A Pending CN111694888A (zh) 2020-06-12 2020-06-12 基于微服务架构的分布式etl数据交换系统及方法

Country Status (1)

Country Link
CN (1) CN111694888A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112231376A (zh) * 2020-09-25 2021-01-15 中国建设银行股份有限公司 一种用于离线数据采集的方法和装置
CN112597166A (zh) * 2020-12-28 2021-04-02 恩亿科(北京)数据科技有限公司 数据流任务管理方法、系统、计算机设备和可读存储介质
CN112732809A (zh) * 2020-12-31 2021-04-30 杭州海康威视系统技术有限公司 一种etl系统及基于etl系统的数据处理方法
CN112948152A (zh) * 2021-04-16 2021-06-11 深圳市今天国际物流技术股份有限公司 一种编排数据处理与接口服务及调用方法
CN112966039A (zh) * 2021-03-18 2021-06-15 上海新炬网络技术有限公司 基于etl引擎的前后端分离执行方法
CN113190553A (zh) * 2021-04-27 2021-07-30 新奥数能科技有限公司 一种基于bpmn的数据上报系统及数据上报方法
CN113515500A (zh) * 2021-05-24 2021-10-19 苏州维众数据技术有限公司 一种可视化的数据处理系统及处理方法
CN113761046A (zh) * 2021-09-13 2021-12-07 中远海运科技股份有限公司 一种基于工作流etl的处理方法及系统
CN113835786A (zh) * 2021-09-30 2021-12-24 四川新网银行股份有限公司 一种数据对接系统、方法和计算机可读存储介质
CN114443025A (zh) * 2022-01-28 2022-05-06 悦锦软件系统(上海)有限公司 用于数据治理平台的模块化etl任务处理系统和etl任务处理方法
CN114579190A (zh) * 2022-02-17 2022-06-03 中国科学院计算机网络信息中心 基于流水线机制的跨中心协同计算的编排方法与系统
CN114691233A (zh) * 2022-03-16 2022-07-01 中国电子科技集团公司第五十四研究所 一种基于工作流引擎的遥感数据处理插件分布式调度方法
CN114980183A (zh) * 2022-05-25 2022-08-30 中国电信股份有限公司 网元配置状态监测方法及装置、系统、介质和电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106846226A (zh) * 2017-01-19 2017-06-13 湖北省基础地理信息中心(湖北省北斗卫星导航应用技术研究院) 一种时空信息组装管理系统
CN111061788A (zh) * 2019-11-26 2020-04-24 江苏瑞中数据股份有限公司 一种基于云架构的多源异构数据转换整合系统及其实现方法
CN111142867A (zh) * 2019-12-31 2020-05-12 谷云科技(广州)有限责任公司 微服务架构下的服务可视化编排系统及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106846226A (zh) * 2017-01-19 2017-06-13 湖北省基础地理信息中心(湖北省北斗卫星导航应用技术研究院) 一种时空信息组装管理系统
CN111061788A (zh) * 2019-11-26 2020-04-24 江苏瑞中数据股份有限公司 一种基于云架构的多源异构数据转换整合系统及其实现方法
CN111142867A (zh) * 2019-12-31 2020-05-12 谷云科技(广州)有限责任公司 微服务架构下的服务可视化编排系统及方法

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112231376A (zh) * 2020-09-25 2021-01-15 中国建设银行股份有限公司 一种用于离线数据采集的方法和装置
CN112597166A (zh) * 2020-12-28 2021-04-02 恩亿科(北京)数据科技有限公司 数据流任务管理方法、系统、计算机设备和可读存储介质
CN112732809B (zh) * 2020-12-31 2023-08-04 杭州海康威视系统技术有限公司 一种etl系统及基于etl系统的数据处理方法
CN112732809A (zh) * 2020-12-31 2021-04-30 杭州海康威视系统技术有限公司 一种etl系统及基于etl系统的数据处理方法
CN112966039A (zh) * 2021-03-18 2021-06-15 上海新炬网络技术有限公司 基于etl引擎的前后端分离执行方法
CN112966039B (zh) * 2021-03-18 2024-03-19 上海新炬网络技术有限公司 基于etl引擎的前后端分离执行方法
CN112948152A (zh) * 2021-04-16 2021-06-11 深圳市今天国际物流技术股份有限公司 一种编排数据处理与接口服务及调用方法
CN113190553A (zh) * 2021-04-27 2021-07-30 新奥数能科技有限公司 一种基于bpmn的数据上报系统及数据上报方法
CN113190553B (zh) * 2021-04-27 2024-03-08 新奥数能科技有限公司 一种基于bpmn的数据上报系统及数据上报方法
CN113515500B (zh) * 2021-05-24 2023-06-30 苏州维众数据技术有限公司 一种可视化的数据处理系统及处理方法
CN113515500A (zh) * 2021-05-24 2021-10-19 苏州维众数据技术有限公司 一种可视化的数据处理系统及处理方法
CN113761046A (zh) * 2021-09-13 2021-12-07 中远海运科技股份有限公司 一种基于工作流etl的处理方法及系统
CN113835786A (zh) * 2021-09-30 2021-12-24 四川新网银行股份有限公司 一种数据对接系统、方法和计算机可读存储介质
CN113835786B (zh) * 2021-09-30 2023-04-28 四川新网银行股份有限公司 一种数据对接系统、方法和计算机可读存储介质
CN114443025A (zh) * 2022-01-28 2022-05-06 悦锦软件系统(上海)有限公司 用于数据治理平台的模块化etl任务处理系统和etl任务处理方法
CN114443025B (zh) * 2022-01-28 2023-10-24 悦锦数字科技(上海)股份有限公司 用于数据治理平台的模块化etl任务处理系统和etl任务处理方法
CN114579190A (zh) * 2022-02-17 2022-06-03 中国科学院计算机网络信息中心 基于流水线机制的跨中心协同计算的编排方法与系统
CN114691233A (zh) * 2022-03-16 2022-07-01 中国电子科技集团公司第五十四研究所 一种基于工作流引擎的遥感数据处理插件分布式调度方法
CN114980183A (zh) * 2022-05-25 2022-08-30 中国电信股份有限公司 网元配置状态监测方法及装置、系统、介质和电子设备
CN114980183B (zh) * 2022-05-25 2023-12-22 中国电信股份有限公司 网元配置状态监测方法及装置、系统、介质和电子设备

Similar Documents

Publication Publication Date Title
CN111694888A (zh) 基于微服务架构的分布式etl数据交换系统及方法
CN108335075B (zh) 一种面向物流大数据的处理系统及方法
US8381212B2 (en) Dynamic allocation and partitioning of compute nodes in hierarchical job scheduling
CN111061788B (zh) 一种基于云架构的多源异构数据转换整合系统及其实现方法
CN103631870B (zh) 一种用于大规模分布式数据处理的系统及其方法
CN111290854A (zh) 任务管理方法、装置、系统、计算机存储介质及电子设备
CN102880503A (zh) 数据分析系统及数据分析方法
CN111061715A (zh) 基于Web和Kafka的分布式数据集成系统及方法
US20080079724A1 (en) Description language for structured graphs
CN111400326A (zh) 一种智慧城市数据管理系统及其方法
CN111339073A (zh) 实时数据处理方法、装置、电子设备及可读存储介质
CN111837121B (zh) 利用可执行逻辑来处理结构化数据项的基于键的日志记录
US20210004712A1 (en) Machine Learning Performance and Workload Management
CN112035516B (zh) 用于算子服务的处理方法、装置、智能工作站和电子设备
CN103581332A (zh) HDFS架构及HDFS架构中NameNode节点的压力分解方法
CN112379884A (zh) 基于Spark和并行内存计算的流程引擎实现方法及系统
CN115373835A (zh) Flink集群的任务资源调整方法、装置及电子设备
CN109840138A (zh) 一种企业管理数据分析处理系统及其方法
CN111190704A (zh) 一种基于大数据处理框架的任务分类处理方法
CN101968747A (zh) 一种机群应用管理系统及其应用管理方法
CN115858499A (zh) 一种数据库分区处理方法、装置、计算机设备和存储介质
CN116643854A (zh) 一种服务编排方法、装置、流程控制器及任务处理器
CN114237858A (zh) 一种基于多集群网络的任务调度方法及系统
CN113886111A (zh) 一种基于工作流的数据分析模型计算引擎系统及运行方法
CN109635042B (zh) Oltp与olap一体化的汽车金融大数据系统

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200922