CN116089126A - 一种数据实时采集方法、装置、设备及可读存储介质 - Google Patents
一种数据实时采集方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN116089126A CN116089126A CN202310170027.4A CN202310170027A CN116089126A CN 116089126 A CN116089126 A CN 116089126A CN 202310170027 A CN202310170027 A CN 202310170027A CN 116089126 A CN116089126 A CN 116089126A
- Authority
- CN
- China
- Prior art keywords
- data
- real
- database
- time
- target data
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 117
- 238000003860 storage Methods 0.000 title claims abstract description 20
- 238000012545 processing Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 16
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 238000001914 filtration Methods 0.000 claims description 11
- 238000013480 data collection Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000012544 monitoring process Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 229910021532 Calcite Inorganic materials 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011423 initialization method Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000007790 scraping Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A90/00—Technologies having an indirect contribution to adaptation to climate change
- Y02A90/10—Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据实时采集方法、装置、设备及可读存储介质,涉及数据库技术领域,包括基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据;将所述目标数据存储至消息队列kafka中,以完成数据库中数据的实时采集。本申请通过JNI实现了数据库中数据的跨平台实时采集,进而提升了数据库中数据实时采集的灵活性。
Description
技术领域
本申请涉及数据库技术领域,特别涉及一种数据实时采集方法、装置、设备及可读存储介质。
背景技术
CDC(Change Data Capture,变化数据捕获)的核心思想是通过日志来监测并捕获数据库的变化(比如包括数据或数据表的插入、更新以及删除等),然后再将这些变更按发生的顺序完整记录下来,写入到消息中间件中,以供其他服务进行订阅及消费。比如,可使用CDC提供的数据创建历史库以及进行近实时缓存处理,也可以将数据提供给MQ(MessageQueue,消息队列),并对用户消费MQ进行分析和审计等。
目前,每个运行平台都会承载其对应的数据库,而相关技术中在对数据库中的数据进行实时采集时,往往无法实现跨平台的数据采集,以致需要为每个平台构建对应的数据采集程序,进而造成数据采集的灵活性较差。由此可见,如何实现对数据库中数据的跨平台实时采集是当前亟需解决的问题。
发明内容
本申请提供一种数据实时采集方法、装置、设备及可读存储介质,以解决相关技术中无法实现对数据库中数据的跨平台实时采集的问题。
第一方面,提供了一种数据实时采集方法,包括以下步骤:
基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据;
将所述目标数据存储至消息队列kafka中,以完成数据库中数据的实时采集。
一些实施例中,在所述基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据的步骤之前,还包括:
通过C++语言或C语言构建动态链接库,所述动态链接库用于通过RPC方式实现对数据库操作日志的拉取操作;
通过JVAV语言在JNI中编写与动态链接库中对应的目标方法,所述目标方法用于对数据库操作日志进行实时读取和转化操作。
一些实施例中,所述基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据,包括:
基于JNI加载所述动态链接库,以通过RPC方式实现对数据库操作日志的拉取操作;
通过所述目标方法对拉取到的数据库操作日志进行实时读取和转化操作,得到目标数据。
一些实施例中,所述通过所述目标方法对拉取到的数据库操作日志进行实时读取和转化操作,得到目标数据,包括:
通过所述目标方法和预设过滤规则对拉取到的数据库操作日志进行过滤,得到过滤后的数据库操作日志;
通过所述目标方法对所述过滤后的数据库操作日志进行实时读取和转化操作,得到目标数据。
一些实施例中,在所述将所述目标数据存储至消息队列kafka中的步骤之后,还包括:
基于分布式计算引擎Flink对kafka中的目标数据进行算子操作处理,并将处理后的数据写入目标数据表中。
一些实施例中,所述kafka中包括多种数据源的目标数据,所述基于分布式计算引擎Flink对kafka中的目标数据进行算子操作处理,并将处理后的数据写入目标数据表中,包括:
基于分布式计算引擎Flink分别对kafka中不同数据源的目标数据进行算子操作处理,得到多个处理后的数据;
并行将多个处理后的数据分别写入与其对应的目标数据表中。
一些实施例中,所述数据库操作日志为分布式数据库OceanBase对应的日志。
第二方面,提供了一种数据实时采集装置,包括:
数据处理单元,其用于基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据;
数据采集单元,其用于将所述目标数据存储至消息队列kafka中,以完成数据库中数据的实时采集。
第三方面,提供了一种数据实时采集设备,包括:存储器和处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现前述的数据实时采集方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,以实现前述的数据实时采集方法。
本申请提供的技术方案带来的有益效果包括:可有效实现对数据库中数据的跨平台实时采集。
本申请提供了一种数据实时采集方法、装置、设备及可读存储介质,包括基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据;将所述目标数据存储至消息队列kafka中,以完成数据库中数据的实时采集。本申请通过JNI实现了数据库中数据的跨平台实时采集,进而提升了数据库中数据实时采集的灵活性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据实时采集方法的流程示意图;
图2为本申请实施例提供的数据交互流程示意图;
图3为本申请实施例提供的数据实时采集系统框架图;
图4为本申请实施例提供的数据实时采集实现方法流程示意图;
图5为本申请实施例提供的一种数据实时采集设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种数据实时采集方法、装置、设备及可读存储介质,其能解决相关技术中无法实现对数据库中数据的跨平台实时采集的问题。
参见图1和图2,本申请实施例提供了一种数据实时采集方法,包括以下步骤:
步骤S10:基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据;其中,所述数据库操作日志为分布式数据库OceanBase对应的日志。
示范性的,可以理解的是,现有的数据库中数据实时采集的解决方案不仅无法实现跨平台,且无法实现对商业版数据库(比如OceanBase)中数据的实时采集,比如最新版的Flink-CDC-Connectors(Flink-CDC-Connectors是一种可以直接从MySQL、PostgreSQL等数据库直接读取全量数据和增量变更数据的)就无法支持对商业版数据库中数据的实时采集。
其中,OceanBase CDC包括liboblog组件,liboblog可以动态库的形式对外提供OceanBase数据库的实时增量(事务)数据,即提供CDC能力,其可通过RPC向OceanBase数据库请求各分区的Redo日志(即重做日志),并结合各个表、列的schema信息(即版本控制规范信息,可通过SQL和OceanBase Server交互获得),将Redo日志转化为一种中间数据格式(比如LOGMSG),并聚合一个事务涉及的各分区的数据变更,进而以事务为单位逐行输出变更数据,以供其他服务调用liboblog的进程拿到数据后可用于数据同步和数据订阅。
因此,在本实施例中,为了能够实现对所有类型数据库中数据的跨平台实时采集,以兼容多种编程语言,将通过JNI(Java Native Interface,Java本地方法接口)调用数据库操作日志进行监听,并在Java端管理数据的生命周期。具体的,数据库为OceanBase为例,将通过远程过程调用RPC方式对OceanBase操作日志进行拉取,然后采用Java本地方法接口JNI来对拉取到的OceanBase操作日志进行实时读取和转化,以得到目标数据(即数据库中发生变化前后对应的数据,且该数据具有目标数据结构)。
需要说明的是,操作日志可以为binlog日志(即二进制日志),也可以是其他类型的操作日志,具体可根据实际需求确定,在此不作限定。
进一步的,在所述基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据的步骤之前,还包括:
通过C++语言或C语言构建动态链接库,所述动态链接库用于通过RPC方式实现对数据库操作日志的拉取操作;
通过JVAV语言在JNI中编写与动态链接库中对应的目标方法,所述目标方法用于对数据库操作日志进行实时读取和转化操作。
示范性的,在本实施例中,将通过C++语言或C语言编写用于监听数据库操作日志(比如binlog日志)的源码程序,并将其编译成动态链接库(即SO文件),以用于通过RPC方式实现对数据库操作日志的拉取操作;同时,在JNI中编写Java类程序代码,并定义native方法(即Java调用非Java代码的接口)与SO文件中的方法一一对应,以使得在Java端通过JNI的System.loadLibrary()(即Java语言加载动态库的方法)加载动态链接库后,能实现对数据库操作日志的实时读取和转化操作。其中,在JNI中需声明由关键字native修饰的函数(比如初始化方法init()、读方法read()等)。
进一步的,所述基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据,包括:
基于JNI加载所述动态链接库,以通过RPC方式实现对数据库操作日志的拉取操作;
通过所述目标方法对拉取到的数据库操作日志进行实时读取和转化操作,得到目标数据。
示范性的,本实施例中,在将用于监听数据库操作日志的源码程序编译成动态链接库后,通过JNI加载该动态链接库,以运行该动态链接库,进而在C++端通过RPC方式拉取数据库操作日志,然后在Java端通过JNI从C++端对数据库操作日志进行实时读取和转化操作,得到目标数据,以实现数据的跨平台采集。
进一步的,所述通过所述目标方法对拉取到的数据库操作日志进行实时读取和转化操作,得到目标数据,包括:
通过所述目标方法和预设过滤规则对拉取到的数据库操作日志进行过滤,得到过滤后的数据库操作日志;
通过所述目标方法对所述过滤后的数据库操作日志进行实时读取和转化操作,得到目标数据。
示范性的,本实施例中,在JNI中监听数据库操作日志的过程中,可对循环获取到的操作日志进行初加工处理,以获取用户所需的目标类型的日志。比如,根据预设的日志类型需求以及recordType(即记录类型)对操作日志进行过滤,假设预设的日志类型需求为新增、删除以及修改,则将recordType中类型为查找的日志过滤掉,只保留类型为新增、删除以及修改的日志;然后通过JNI中声明的native修饰的函数对类型为新增、删除以及修改的日志进行读取解析,得到数据库中发生变化前后对应的数据,再对该数据进行转化操作,即将数据组装成目标数据结构,形成目标数据,以供发往下游流转。
步骤S20:将所述目标数据存储至消息队列kafka中,以完成数据库中数据的实时采集。
示范性的,本实施例中,在获取到目标数据后,可以通过socket(其为网络通讯经常采用的一种方式,即基于TCP和UDP通信协议的接口)通信把目标数据存储至kafka中的topic(即kafka中存储消息的主题,其相当于数据库中的表)内,也可以通过编写代码,以在C++端和JNI中添加对kafka的依赖,进而在JNI中直接将目标数据发送至kafka,从而完成数据库中数据的实时采集。需要说明的是,具体采用哪种方式将目标数据发送至kafka,可根据实际需求确定,在此不作限定。
应当理解的是,在将目标数据存储至kafka-topic之前,还可以对目标数据进行深加工。比如,先通过socket通信将目标数据发送至第三方服务,然后由第三方服务根据预设的数据格式需求(例如日期格式等)对目标数据的格式是否正确进行判断和修改等,再将深加工后的目标数据发送到kafka-topic进行存储。
进一步的,在所述将所述目标数据存储至消息队列kafka中的步骤之后,还包括:
基于分布式计算引擎Flink对kafka中的目标数据进行算子操作处理,并将处理后的数据写入目标数据表中。
示范性的,应当理解的是,Flink-CDC-Connectors只能捕获数据源中数据的变化,但是无法对数据进行算子(过滤、聚合、维表JOIN等)操作。而在本实施例中,下游将通过编写Flink SQL(即Flink实时计算为了简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准SQL语义的开发语言)来连接kafka,以对目标数据进行过滤、聚合、维表JOIN等算子操作,得到处理后的数据,并将处理后的数据写入目标数据表中。
其中,Flink SQL利用Apache Calcite(其是一种提供了标准的SQL语言、多种查询优化和连接各种数据源基础框架)将SQL翻译为关系代数表达式,使用表达式折叠(Expression Reduce)、下推优化(Predicate/ProjectionPushdown)等优化技术生成物理执行计划(Physical Plan),并利用Codegen(用于生成源代码的工具)技术生成高效执行代码;此外,Flink SQL可使用高效的二进制数据存储结构BinaryRow加速计算性能,并使用Mini-batch攒批提高吞吐,降低两层聚合时由Retraction引起的数据抖动。
需要理解的是,传统数据采集中并不具备断点续传、限流、监控、分布式运行等特点,而本实施例则依托Flink生态,对任务原生支持,提供灵活的配置,以做到断点续传、限流、监控、分布式运行。
进一步的,所述kafka中包括多种数据源的目标数据,所述基于分布式计算引擎Flink对kafka中的目标数据进行算子操作处理,并将处理后的数据写入目标数据表中,包括:
基于分布式计算引擎Flink分别对kafka中不同数据源的目标数据进行算子操作处理,得到多个处理后的数据;
并行将多个处理后的数据分别写入与其对应的目标数据表中。
示范性的,在本实施例中,支持同时将多个数据源的数据库表写入到多个目标数据表中,以提高灵活性。具体的,通过Flink分别对kafka中不同数据源的目标数据进行算子操作,且并行地将其结果分别写入与其对应的目标数据表中,进而提高数据处理效率。
由此可见,本实施例为数据库中数据的实时采集提供了一种新的解决方案,具体通过JNI实现数据库中数据的跨平台实时采集,以提高现有数据库中数据实时采集的灵活性,且通过充分利用C++语言运行效率极高和底层可控性极高的特性,通过RPC方式拉取数据库中各个分区的操作日志,并组装成目标数据结构,向下游(即Flink)流转,以进行后续的采集和计算等,实现对数据的算子操作支持。
以下将结合图3对本实施例所涉及的系统框架进行阐释。
本实施例中包括数据库层、工具层、实现层以及应用层。其中,数据库层由多个ObServer组成的OceanBase集群;工具层则包括OceanBase的官方工具(比如OMS、OCP以及Liboblog等)和第三方工具,Liboblog是OceanBase的增量数据同步工具;实现层通过RPC方式拉取OceanBase中各个分区的操作日志后,通过JNI进行日志读取,并经过socket进行数据流的传输,最终写入kafka中;应用层则依赖Flink实时流计算,进行采集入库和业务处理。具体的,参见图2所示,数据交互过程为:数据从数据库实例中产生,并通过JNI的方式获取和采集,然后通过socket发送到第三方服务进行深加工,再将深加工后的数据发送到kafka的topic中,最后进行Flink应用,实现各种算子操作,以得到计算结果。
以下将结合图4对本实施例的具体实现过程进行阐释。
为了解决现有技术无法完成的跨平台运行问题,本实施例将使用Java端处理OceanBase实时采集的数据结果,即编写JniLiboblog.java类,定义本地方法,用javah命令反向生成.h文件;实现.h文件中的JNI方法,在相应的cpp文件中实现本地方法,其中包括int()、readBytes()、read()、release()、destory()、getTableName()、getDbName()等方法,将在JVM(Java虚拟机)中的Java类加载到JVM虚拟机中,在JniLiboblog.cpp中初始化加载Java映射类,并完成数据结构对LightRecord的转换和绑定;编写并引入C++端编写的头文件、实现类等(比如LiboblogMod.h、RecordConverter.h、Utils.h及其cpp文件),编译出.so文件,同时编译JniLiboblog.java类,并绑定环境变量;创建本地liboblog.conf(即数据库的连接信息、账号、密码等配置信息)文件,根据OceanBase集群配置以下必填项:集群用户名:cluster_user、集群密码:cluster_password、白名单:tb_white_list、集群地址:cluster_url,再设置采集起点,即可完成配置;
调用.so文件,读取本地liboblog.conf文件和采集起点;并通过配置文件和采集起点初始化JniLiboblog,开启监听record,比如循环读取Redo日志,若未读取到,则重新读取,若读取到,则用LightRecord对象来格式化record,且允许type过滤record,其中,type的所有类型如下:HEARTBEAT、INSERT、UPDATE、DELETE、REPLACE、CONSISTENCY_TEST、BEGIN、COMMIT、DDL、DML、ROLLBACK、ROW和UNKNOW;将record的数据转为JSON格式,同时打开非阻塞的SocketChannel,启动socket-client,此时需要自定义传输协议,用于解决高并发时,socket消息会合并的问题,具体的:将消息转为二进制byte的数组,通过计算recordByte的长度,将长度转换为一个四位长度的byte数组,并拼接在消息体byte数组的前面,组建成一个新的byte数组,将此字节流通过非阻塞的socket发送出去。
同时,启动socket-server,监听socket端口,打开非阻塞的ServerSocketChannel,与客户端建立连接,轮询监听数据流,通过socket-client制定的传输协议进行解密,读取前四位的byte[],将其转换为int类型的长度,再继续读取该长度的byte[],这就是一条消息,继续循环此过程,直至将整条数据流读取完毕,其中所产生的每一条消息都会发送给指定的kafka-topic。
此外,在消费端,构建Flink运行环境,编写FlinkSql语句,以连接至kafka-topic,并自定义SQL语句完成各种业务功能(比如过滤、聚合、维表JOIN等)。需要说明的是,采集到kafka的数据,在Flinksql中,可以通过多1个create语句连接对应的kafka,并根据多表对多表的写入关系进行过滤,具体可以过滤采集类型(INSERT、UPDATE、DELETE等)、数据库名称(Schema/Database)、表名(Table)、采集起点(Timestamp)等,最后在Finksql语句中按照常规的语法进行编写,以实现各种业务功能。
本申请实施例还提供了一种数据实时采集装置,包括:
数据处理单元,其用于基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据;
数据采集单元,其用于将所述目标数据存储至消息队列kafka中,以完成数据库中数据的实时采集。
进一步的,所述装置还包括构建单元,其用于:
通过C++语言或C语言构建动态链接库,所述动态链接库用于通过RPC方式实现对数据库操作日志的拉取操作;
通过JVAV语言在JNI中编写与动态链接库中对应的目标方法,所述目标方法用于对数据库操作日志进行实时读取和转化操作。
进一步的,所述数据处理单元具体用于:
基于JNI加载所述动态链接库,以通过RPC方式实现对数据库操作日志的拉取操作;
通过所述目标方法对拉取到的数据库操作日志进行实时读取和转化操作,得到目标数据。
进一步的,所述数据处理单元具体用于:
通过所述目标方法和预设过滤规则对拉取到的数据库操作日志进行过滤,得到过滤后的数据库操作日志;
通过所述目标方法对所述过滤后的数据库操作日志进行实时读取和转化操作,得到目标数据。
进一步的,所述装置还包括数据计算单元,其用于:
基于分布式计算引擎Flink对kafka中的目标数据进行算子操作处理,并将处理后的数据写入目标数据表中。
进一步的,所述kafka中包括多种数据源的目标数据,所述数据计算单元具体用于:
基于分布式计算引擎Flink分别对kafka中不同数据源的目标数据进行算子操作处理,得到多个处理后的数据;
并行将多个处理后的数据分别写入与其对应的目标数据表中。
进一步的,所述数据库操作日志为分布式数据库OceanBase对应的日志。
需要说明的是,所属本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各单元的具体工作过程,可以参考前述数据实时采集方法实施例中的对应过程,在此不再赘述。
上述实施例提供的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图5所示的数据实时采集设备上运行。
本申请实施例还提供了一种数据实时采集设备,包括:通过系统总线连接的存储器、处理器和网络接口,存储器中存储有至少一条指令,至少一条指令由处理器加载并执行,以实现前述的数据实时采集方法的全部步骤或部分步骤。
其中,网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
处理器可以是CPU,还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程逻辑门阵列(FieldProgrammable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件分立硬件组件等。通用处理器可以是微处理器,或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如视频播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如视频数据、图像数据等)等。此外,存储器可以包括高速随存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘、智能存储卡(SmartMedia Card,SMC)、安全数字(Secure digital,SD)卡、闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件或其他易失性固态存储器件。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现前述的数据实时采集方法的全部步骤或部分步骤。
本申请实施例实现前述的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Onlymemory,ROM)、随机存取存储器(RandomAccessmemory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、服务器或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据实时采集方法,其特征在于,包括以下步骤:
基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据;
将所述目标数据存储至消息队列kafka中,以完成数据库中数据的实时采集。
2.如权利要求1所述的数据实时采集方法,其特征在于,在所述基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据的步骤之前,还包括:
通过C++语言或C语言构建动态链接库,所述动态链接库用于通过RPC方式实现对数据库操作日志的拉取操作;
通过JVAV语言在JNI中编写与动态链接库中对应的目标方法,所述目标方法用于对数据库操作日志进行实时读取和转化操作。
3.如权利要求2所述的数据实时采集方法,其特征在于,所述基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据,包括:
基于JNI加载所述动态链接库,以通过RPC方式实现对数据库操作日志的拉取操作;
通过所述目标方法对拉取到的数据库操作日志进行实时读取和转化操作,得到目标数据。
4.如权利要求3所述的数据实时采集方法,其特征在于,所述通过所述目标方法对拉取到的数据库操作日志进行实时读取和转化操作,得到目标数据,包括:
通过所述目标方法和预设过滤规则对拉取到的数据库操作日志进行过滤,得到过滤后的数据库操作日志;
通过所述目标方法对所述过滤后的数据库操作日志进行实时读取和转化操作,得到目标数据。
5.如权利要求1所述的数据实时采集方法,其特征在于,在所述将所述目标数据存储至消息队列kafka中的步骤之后,还包括:
基于分布式计算引擎Flink对kafka中的目标数据进行算子操作处理,并将处理后的数据写入目标数据表中。
6.如权利要求5所述的数据实时采集方法,其特征在于,所述kafka中包括多种数据源的目标数据,所述基于分布式计算引擎Flink对kafka中的目标数据进行算子操作处理,并将处理后的数据写入目标数据表中,包括:
基于分布式计算引擎Flink分别对kafka中不同数据源的目标数据进行算子操作处理,得到多个处理后的数据;
并行将多个处理后的数据分别写入与其对应的目标数据表中。
7.如权利要求1所述的数据实时采集方法,其特征在于:所述数据库操作日志为分布式数据库OceanBase对应的日志。
8.一种数据实时采集装置,其特征在于,包括:
数据处理单元,其用于基于Java本地方法接口JNI对通过远程过程调用RPC方式拉取到的数据库操作日志进行实时读取和转化,得到目标数据;
数据采集单元,其用于将所述目标数据存储至消息队列kafka中,以完成数据库中数据的实时采集。
9.一种数据实时采集设备,其特征在于,包括:存储器和处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现权利要求1至7中任一项所述的数据实时采集方法。
10.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,以实现权利要求1至7中任一项所述的数据实时采集方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310170027.4A CN116089126A (zh) | 2023-02-27 | 2023-02-27 | 一种数据实时采集方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310170027.4A CN116089126A (zh) | 2023-02-27 | 2023-02-27 | 一种数据实时采集方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116089126A true CN116089126A (zh) | 2023-05-09 |
Family
ID=86199235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310170027.4A Pending CN116089126A (zh) | 2023-02-27 | 2023-02-27 | 一种数据实时采集方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116089126A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116386799A (zh) * | 2023-06-05 | 2023-07-04 | 数据空间研究院 | 一种医疗数据采集与标准转换方法及系统 |
CN117648212A (zh) * | 2024-01-29 | 2024-03-05 | 深圳市飞泉云数据服务有限公司 | 基于rpc的数据库调用方法、装置、设备及存储介质 |
CN117742782A (zh) * | 2024-02-19 | 2024-03-22 | 成都九洲电子信息系统股份有限公司 | 用于软件系统的日志数据跨语言自动记录方法及系统 |
-
2023
- 2023-02-27 CN CN202310170027.4A patent/CN116089126A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116386799A (zh) * | 2023-06-05 | 2023-07-04 | 数据空间研究院 | 一种医疗数据采集与标准转换方法及系统 |
CN116386799B (zh) * | 2023-06-05 | 2023-08-18 | 数据空间研究院 | 一种医疗数据采集与标准转换方法及系统 |
CN117648212A (zh) * | 2024-01-29 | 2024-03-05 | 深圳市飞泉云数据服务有限公司 | 基于rpc的数据库调用方法、装置、设备及存储介质 |
CN117648212B (zh) * | 2024-01-29 | 2024-04-09 | 深圳市飞泉云数据服务有限公司 | 基于rpc的数据库调用方法、装置、设备及存储介质 |
CN117742782A (zh) * | 2024-02-19 | 2024-03-22 | 成都九洲电子信息系统股份有限公司 | 用于软件系统的日志数据跨语言自动记录方法及系统 |
CN117742782B (zh) * | 2024-02-19 | 2024-06-11 | 成都九洲电子信息系统股份有限公司 | 用于软件系统的日志数据跨语言自动记录方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108536761B (zh) | 报表数据查询方法及服务器 | |
CN116089126A (zh) | 一种数据实时采集方法、装置、设备及可读存储介质 | |
CN111625452B (zh) | 流量回放方法和系统 | |
CN108280023B (zh) | 任务执行方法、装置和服务器 | |
US6772107B1 (en) | System and method for simulating activity on a computer network | |
US7779036B2 (en) | Integration functionality for a test tool for application programming interfaces | |
US20190129734A1 (en) | Data collection workflow extension | |
Zhang et al. | Research on lightweight MVC framework based on spring MVC and mybatis | |
DE102020115253A1 (de) | Verfahren und einrichtung zum ausführen eines applets | |
US20180129712A1 (en) | Data provenance and data pedigree tracking | |
US20130066924A1 (en) | Method and apparatus for utilizing matlab functionality in java-enabled environment | |
US10496423B2 (en) | Method for opening up data and functions of terminal application based on reconstruction technology | |
US9116855B2 (en) | Data processing system and data processing method | |
US20170131980A1 (en) | Model driven architecture for network management and configuration | |
Cushing et al. | Computational proxies: modeling scientific applications in object databases | |
CN112115118A (zh) | 数据库压测的优化方法及装置、存储介质、电子设备 | |
CN116400914A (zh) | 一种基于数据模型快速构建web应用的方法 | |
CN115712524A (zh) | 数据恢复方法及装置 | |
CN106293862A (zh) | 一种可扩展标记语言xml数据的解析方法和装置 | |
CN110515993B (zh) | 税务数据转换方法及系统 | |
CN111984648A (zh) | 一种微服务架构下数据初始化方法及系统 | |
CN111782289B (zh) | 基于Adams软件的协同方法、系统、计算机设备及存储介质 | |
CN110750258A (zh) | 一种基于xml的可重用监控软件设计方法 | |
CN117785155A (zh) | 一种配置化外部系统接口对接源码的生成与执行方法、系统及装置 | |
CN114237626B (zh) | 一种非侵入式动态编辑jvm参数的方法、系统及设备 |
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 |