CN110704458B - 数据同步方法、装置、计算机设备及存储介质 - Google Patents
数据同步方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110704458B CN110704458B CN201910755579.5A CN201910755579A CN110704458B CN 110704458 B CN110704458 B CN 110704458B CN 201910755579 A CN201910755579 A CN 201910755579A CN 110704458 B CN110704458 B CN 110704458B
- Authority
- CN
- China
- Prior art keywords
- data
- synchronization
- message
- change information
- synchronous
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据同步方法、装置、计算机设备及存储介质。所述方法包括:获取数据源表和同步数据表;从数据源表中获取目标数据源,并根据目标数据源从同步数据表中获取目标数据表,对目标数据表进行监听,获取数据变化信息;根据数据变化信息计算数据同步条数;采用分页查询方式确定分页数量,以及每页的同步数据;将每页的同步数据封装成每页对应的消息中间件报文;根据分页数量,为每个消息中间件报文分配空闲线程,并采用多线程的方式将消息中间件报文发送到分布式消息中间件。本发明的技术方案实现了各种异构数据源之间的实时低延迟的增量数据同步,提高了数据同步的实时性,同时有效防止内存溢出,避免大量线程阻塞,提升系统性能。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据同步方法、装置、计算机设备及存储介质。
背景技术
目前,随着数据收集手段的不断丰富,数据量也随之增大,而针对这些数据的分析需求也越来越旺盛,由于关系型数据库,例如oracle数据库,可能无法承受联机分析处理(Online Analytical Processing,OLAP)的需求,因此常常需要将关系型数据库的数据迁移到大数据平台,然而,当关系型数据库的数据完全迁移到大数据平台后,又很难满足数据库事务处理的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)的需求。因此,通常比较折中的方案是对于联机事务处理(On-LineTransaction Processing,OLTP)的应用仍然使用关系型数据库,而对于联机分析处理的应用使用大数据平台,这样就需要在关系型数据库和大数据平台之间进行数据同步。
目前,异构数据库之间的数据同步主要采用Kettle、GG,Sqoop等开源工具,这些数据同步工具均具有实时性低,并且在同步过程中对系统性能影响较大的缺点,并且可扩展性不高。
发明内容
本发明实施例提供一种数据同步方法、装置、计算机设备及存储介质,以解决现有技术中数据同步的实时性低、影响系统性能和可扩展性低的问题。
一种数据同步方法,包括第一服务端执行的如下步骤:
获取预先配置的数据源表和同步数据表;
从所述数据源表中获取目标数据源,并根据所述目标数据源从所述同步数据表中获取所述目标数据源中的目标数据表,对所述目标数据表进行监听,获取数据变化信息;
根据所述数据变化信息计算数据同步条数;
采用分页查询方式确定所述数据同步条数对应的分页数量,以及每页的同步数据;
将每页的所述同步数据封装成每页对应的消息中间件报文;
根据所述分页数量,从预设的线程池中为每个所述消息中间件报文分配空闲线程,并采用多线程的方式将所述消息中间件报文发送到预设的分布式消息中间件。
一种数据同步方法,包括第二服务端执行的如下步骤:
接收分布式消息中间件发送的订阅消息;
从所述订阅消息中获取待同步数据;
将所述待同步数据同步到目标数据库。
一种数据同步装置,包括第一服务端,该第一服务端包括:
获取模块,用于获取预先配置的数据源表和同步数据表;
监听模块,用于从所述数据源表中获取目标数据源,并根据所述目标数据源从所述同步数据表中获取所述目标数据源中的目标数据表,对所述目标数据表进行监听,获取数据变化信息;
计算模块,用于根据所述数据变化信息计算数据同步条数;
查询模块,用于采用分页查询方式确定所述数据同步条数对应的分页数量,以及每页的同步数据;
封装模块,用于将每页的所述同步数据封装成每页对应的消息中间件报文;
发送模块,用于根据所述分页数量,从预设的线程池中为每个所述消息中间件报文分配空闲线程,并采用多线程的方式将所述消息中间件报文发送到预设的分布式消息中间件。
一种数据同步装置,包括第二服务端,该第二服务端包括:
接收模块,用于接收分布式消息中间件发送的订阅消息;
订阅模块,用于从所述订阅消息中获取待同步数据;
同步模块,用于将所述待同步数据同步到目标数据库。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据同步方法中第一服务端或第二服务端执行的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据同步方法中第一服务端或第二服务端执行的步骤。
上述数据同步方法、装置、计算机设备及存储介质中,第一服务端从获取到的预先配置的数据源表和同步数据表中,确定需要进行数据同步的目标数据源中的目标数据表,并对目标数据表进行监听,获取数据变化信息,然后根据数据变化信息计算数据同步条数,采用分页查询方式确定数据同步条数对应的分页数量,以及每页的同步数据,将每页的同步数据封装成每页对应的消息中间件报文,并根据分页数量,从预设的线程池中为每个消息中间件报文分配空闲线程后,采用多线程的方式将消息中间件报文发送到预设的分布式消息中间件;第二服务端通过订阅消息从分布式消息中间件实时获取待同步数据,并将待同步数据同步到目标数据库中。第一服务端作为分布式消息中间件的生产方,对各种异构数据源进行数据同步分析,采用监听方式实时获取数据变化,并将需要同步的数据采用多线程和分页查询的方式及时发送到分布式消息中间件,第二服务端作为分布式消息中间件的消费方,利用分布式消息中间件的实时消息订阅机制,从分布式消息中间件及时获取待同步数据并同步到目标数据库,实现了各种异构数据源之间的实时低延迟的增量数据同步,提高了数据同步的实时性,并且多线程和分页查询的方式能够有效防止内存溢出,避免大量线程阻塞,提升系统性能,同时,采用数据源表和同步数据表能够对需要同步的数据进行灵活配置,提高可扩展性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中数据同步方法的一应用环境示意图;
图2是本发明一实施例中数据同步方法的一流程图;
图3是本发明一实施例中数据同步方法中步骤S3的一流程图;
图4是本发明一实施例中数据同步方法的步骤S9的一流程图;
图5是本发明一实施例中数据同步装置的一示意图;
图6是本发明一实施例中数据同步装置的另一示意图;
图7是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供的数据同步方法,可应用在如图1所示的应用环境中,该应用环境包括第一服务端、第二服务端和分布式消息中间件,其中,第一服务端和分布式消息中间件之间,以及第二服务端和分布式消息中间件均通过网络进行连接,该网络可以是有线网络或者无线网络,第一服务端、第二服务端和分布式消息中间件具体均可以用独立的服务器或者多个服务器组成的服务器集群实现。第一服务端作为分布式消息中间件的生产方,实时生产出需要同步的数据并发送给分布式消息中间件,第二服务端作为分布式消息中间件的消费方,通过订阅消息从分布式消息中间件获取待同步数据并完成数据同步。
在一实施例中,如图2所示,提供一种数据同步方法,以该方法应用在图1中的第一服务端和第二服务端为例进行说明,具体包括步骤S1至步骤S9,详述如下:
S1:第一服务端获取预先配置的数据源表和同步数据表。
具体地,数据源表用于配置化管理各个业务系统的数据源,数据源表的字段包括但不限于:数据源ID、数据源名称、数据源地址、数据源状态、数据源创建时间和数据源修改时间等。
其中,数据源状态用于标识数据源是否正在被使用,数据源状态可以包括有效状态和无效状态,若数据源状态为有效状态,则说明数据源正在被使用,若数据源状态为无效状态,则说明数据源未被启用。
同步数据表定义了各个业务系统的数据源中需要进行数据同步的数据表的表信息,同步数据表的字段包括但不限于:数据源ID、数据源名称、数据表ID、数据表名称、同步标识、数据表创建时间和数据表修改时间等。其中,同步标识用于标识该数据表是否需要进行数据同步,即当该数据表中的数据发生变化时,是否需要将变化后的数据同步到与该数据表相关的其他数据表中。
需要说明的是数据源表和同步数据表可以预先设置,并可进行实时更新,用户可以根据业务系统的需要在数据源表和同步数据表中配置和修改需要进行数据同步的数据源和数据表。
进一步地,第一服务端可以为用户提供可视化操作界面,用户通过可视化操作界面能够方便快捷的配置数据源表和同步数据表中的信息。
S2:第一服务端从数据源表中获取目标数据源,并根据目标数据源从同步数据表中获取目标数据源中的目标数据表,对目标数据表进行监听,获取数据变化信息。
具体地,第一服务端根据获取到的数据源表,读取数据源表中数据源状态为有效状态的数据源ID,将读取到的数据源ID对应的数据源作为目标数据源,并根据该目标数据源在同步数据表中查询该目标数据源所在的记录,并读取查询到的记录中数据表ID字段的值,将读取到的数据表ID对应的数据表作为目标数据表。
第一服务端对目标数据表进行监听,监听数据变化,当监听到目标数据表的增删改操作时,获取增删改操作导致的数据变化信息。
其中,第一服务端对目标数据表进行监听的具体方式可以根据实际应用的需要进行选择,例如,可以通过对目标数据表增加触发器Trigger的方式实现对目标数据表的监听,并且,不同类型的数据源可以使用不同的监听方式,具体可以根据数据源的类型采用与该类型相匹配的监听方式。
数据变化信息具体可以包括但不限于:目标数据表的数据表ID、目标数据表所在的目标数据源的数据源ID、发生数据变化的数据记录或字段,以及变化前和变化后的字段值等。
S3:第一服务端根据数据变化信息计算数据同步条数。
具体地,第一服务端根据步骤S2获取到的数据变化信息,计算需要进行数据同步的数据同步条数。
在一具体实施例中,若数据源为Oracle、Mysql等关系型数据库,则可以使用聚焦函数count计算数据同步条数。
S4:第一服务端采用分页查询方式确定数据同步条数对应的分页数量,以及每页的同步数据。
具体地,第一服务端预先设置分页查询方式下每页的最大数据条数,根据最大数据条数和数据同步条数,计算分页数量,具体计算过程为:假设最大数据条数为pageSize,数据同步条数为totalRecordCount,则计算totalRecordCount除以pageSize得到的商PageCount,以及余数lastPageCount,若lastPageCount为0,则分页数量为PageCount,若lastPageCount大于0,则分页数量为PageCount加1。
第一服务端根据计算得到的分页数量对数据变化信息中的数据记录,按照最大数据条数进行分页,得到每页的同步数据。
例如,若数据同步条数为10000条,每页的最大数据条数为1000条,则分页数量为10页,每页的同步数据条数为1000条;若数据同步条数为10000条,每页的最大数据条数为900条,则分页数量为12页,前11页每页的同步数据条数为900条,第12页的同步数据条数为100条。
S5:第一服务端将每页的同步数据封装成每页对应的消息中间件报文。
具体地,第一服务端将步骤S4得到的每一页的同步数据,按照预设的分布式消息中间件的报文格式,封装成消息中间件报文。例如,若分页数量为N,每一页的同步数据均被封装为一个消息中间件报文,共得到N个消息中间件报文,其中,N为正整数。
其中,预设的分布式消息中间件的报文格式具体可以是目标数据表的数据表ID、目标数据表所在的目标数据源的数据源ID、同步数据,以及预设的保留字段的顺序组合。
在本实施例中,对分布式消息中间件不做具体限定,其具体可以是Kafka、RabbitMQ、RocketMQ等,在实际应用中可以根据需要进行选择。优选地,采用RocketMQ作为分布式消息中间件,RocketMQ是一款开源的基于jms规范的分布式的消息中间件,RocketMQ具有严格保证消息顺序、提供丰富的消息拉取模式、高效的订阅者水平扩展能力、实时的消息订阅机制,以及亿级消息堆积能力等特点。
S6:第一服务端根据分页数量,从预设的线程池中为每个消息中间件报文分配空闲线程,并采用多线程的方式将消息中间件报文发送到预设的分布式消息中间件。
具体地,第一服务端将每个消息中间件报文存放在预设的队列中,第一服务端从预设的线程池中选取空闲线程,并从预设的队列中依次提取每个消息中间件报文,为每个消息中间件报文分配一个空闲线程,当空闲线程被全被分配完,即预设的线程池中的空闲线程数量为零时,若预设的队列中还有未被提取的消息中间件报文,则第一服务端暂停从预设的队列中获取消息中间件报文,直到线程池中回收到空闲线程后继续获取消息中间件报文并进行空闲线程分配。
第一服务端采用多线程的方式将消息中间件报文同步发送到分布式消息中间件时,若当前已经被分配的空闲线程的数量超过预设的同步发送数量,则从被分配的空闲线程中选取同步发送数量的线程,并使用选取的线程将其包含的消息中间件报文同步发送到分布式消息中间件,同时,启动定时器等待预设的锁定时间后,再继续使用剩余的被分配的空闲线程发送剩余的消息中间件报文。通过这种方式实现分批次处理,以防止大量线程阻塞,从而提高系统的高可用性。
在一具体实施例中,第一服务端可以采用基于Java的Executorservice线程池技术提供线程池,例如,通过Java提供的newFixedThreadPool函数创建一个定长线程池,实现多线程同步进行消息中间件报文的发送。
S7:第二服务端接收分布式消息中间件发送的订阅消息。
具体地,分布式消息中间件提供消息订阅机制,第二服务端预先向分布式消息中间件订阅目标数据源和目标数据表对应的数据变化信息。
分布式消息中间件接收到第一服务端发送的消息中间件报文后,对消息中间件报文进行识别,根据数据表ID和数据源ID识别目标数据源和目标数据表对应的消息中间件报文,并对识别出的消息中间件报文进行解析,提取消息中间件报文中的同步数据,并将提取出的同步数据重新封装为订阅消息发送到第二服务端。
S8:第二服务端从订阅消息中获取待同步数据。
具体地,第二服务端按照订阅消息的消息格式对订阅消息进行解析,从订阅消息中获取目标数据源和目标数据表对应的待同步数据。
S9:第二服务端将待同步数据同步到目标数据库。
具体地,第二服务端根据待同步数据,在目标数据库中获取与待同步数据对应的源数据,比较待同步数据和源数据,进行相应的增加、修改、删除等操作,将待同步数据同步到目标数据库,完成目标数据库的数据同步。
可以理解的,目标数据库可以是与目标数据源同源的数据库,可以是与目标数据源不同源的数据库。
本实施例中,第一服务端从获取到的预先配置的数据源表和同步数据表中,确定需要进行数据同步的目标数据源中的目标数据表,并对目标数据表进行监听,获取数据变化信息,然后根据数据变化信息计算数据同步条数,采用分页查询方式确定数据同步条数对应的分页数量,以及每页的同步数据,将每页的同步数据封装成每页对应的消息中间件报文,并根据分页数量,从预设的线程池中为每个消息中间件报文分配空闲线程后,采用多线程的方式将消息中间件报文发送到预设的分布式消息中间件;第二服务端通过订阅消息从分布式消息中间件实时获取待同步数据,并将待同步数据同步到目标数据库中。第一服务端作为分布式消息中间件的生产方,对各种异构数据源进行数据同步分析,采用监听方式实时获取数据变化,并将需要同步的数据采用多线程和分页查询的方式及时发送到分布式消息中间件,第二服务端作为分布式消息中间件的消费方,利用分布式消息中间件的实时消息订阅机制,从分布式消息中间件及时获取待同步数据并同步到目标数据库,实现了各种异构数据源之间的实时低延迟的增量数据同步,提高了数据同步的实时性,并且多线程和分页查询的方式能够有效防止内存溢出,避免大量线程阻塞,提升系统性能,同时,采用数据源表和同步数据表能够对需要同步的数据进行灵活配置,提高可扩展性。
在一实施例中,如图3所示,在步骤S3中,第一服务端根据数据变化信息计算数据同步条数,具体包括步骤S31至步骤S34,详述如下:
S31:第一服务端获取数据变化信息对应的目标数据表的同步标识字段。
具体地,第一服务端根据数据变化信息包含的目标数据表的数据表ID,从同步数据表中读取数据表ID所在记录的同步标识字段。
同步标识字段用于用于标识数据表是否需要进行数据同步,即当该数据表中的数据发生变化时,是否需要将变化后的数据同步到与该数据表相关的其他数据表中。同步标识字段的字段值可以包括需要同步和不需要同步。
S32:若同步标识字段的取值为需要同步,则第一服务端保留该数据变化信息。
具体地,若步骤S31得到目标数据表的同步标识字段的字段值为需要同步,即需要将目标数据表中变化后的数据同步到与目标数据表相关的其他数据表中,此时,第一服务端保留目标数据表的数据变化信息。
S33:若同步标识字段的取值为不需要同步,则第一服务端丢弃该数据变化信息。
具体地,若步骤S31得到目标数据表的同步标识字段的字段值为不需要同步,即无需将目标数据表中变化后的数据同步到与目标数据表相关的其他数据表中,此时,第一服务端直接丢弃目标数据表的数据变化信息。
S34:第一服务端根据保留的数据变化信息计算数据同步条数。
具体地,第一服务端根据步骤S32和步骤S33的筛选结果,对保留下来的数据变化信息进行数据同步条数的计算,其计算过程可以与步骤S3中描述的计算过程相同,为避免重复,此处不再赘述。
本实施例中,第一服务端根据数据变化信息对应的目标数据表的同步标识字段,确定是否需要保留该数据变化信息,进而对保留的数据变化信息计算数据同步条数,实现了对数据同步的灵活配置,提高可扩展性。
在一实施例中,在步骤S1之前,第一服务端还可以创建定时数据同步任务,详述如下:
第一服务端使用定时任务框架创建定时数据同步任务。
具体地,定时任务框架具体可以是Quartz,Quartz是一款开源的基于Java的作业调度框架,能够实现持久性作业,并对调度作业进行有效管理,Quartz由调度器Scheduler、任务JobDetail和触发器Trigger三部分组成,通过JobDetail创建定时数据同步任务,并使用调度器Scheduler和触发器Trigger实现对定时数据同步任务的定期触发和执行。
进一步地,在创建定时数据同步任务的基础上,在步骤S3中,第一服务端根据数据变化信息计算数据同步条数,具体还可以包括如下步骤,详述如下:
若定时数据同步任务被触发,则第一服务端根据数据变化信息计算数据同步条数。
具体地,通过定时任务框架创建的定时数据同步任务能够被定期触发和执行,当定时数据同步任务被触发时,第一服务端通过预先创建的定时任务框架,驱动该定时数据同步任务的执行,即根据数据变化信息计算数据同步条数,其计算过程可以与上述实施例中对步骤S3中描述的计算过程相同,为避免重复,此处不再赘述。
本实施例中,第一服务端使用定时任务框架创建定时数据同步任务,并在定时数据同步任务被触发时,根据数据变化信息计算数据同步条数,实现对数据同步操作的定时调度,有序管理。
在一实施例中,如图4所示,在步骤S9中,第二服务端将待同步数据同步到目标数据库,具体包括步骤S91至步骤S93,详述如下:
S91:第二服务端对待同步数据进行准确性校验,得到校验结果。
具体地,准确性校验的内容具体可以包括重复数据检查和数据取值范围校验。其中,重复数据检查用于检查待同步数据是否与目标数据库中对应的数据重复,若重复则确认重复数据检查的结果为失败,若不重复则确认重复数据检查的结果为成功;数据取值范围校验用于校验待同步数据中字段的值是否符合该值字段的取值范围要求,若符合则确认数据取值范围校验的结果为成功,如不符合则确认数据取值范围校验的结果为失败。
当重复数据检查的结果和数据取值范围校验的结果均为成功,则确认准确定校验的校验结果为校验成功,当重复数据检查的结果为失败或数据取值范围校验的结果为失败,则确认准确定校验的校验结果为校验失败。
S92:若校验结果为检验成功,则第二服务端将待同步数据同步到目标数据库。
具体地,若步骤S91得到的校验结果为校验成功,则第二服务端确认待同步数据为合法数据,将该待同步数据同步到目标数据库,即比较待同步数据与目标数据库中对应的目标数据,并根据比较结果进行相应的增加、删除、修改等操作。
S93:若校验结果为检验失败,则第二服务端按照预设的告警方式进行同步数据异常告警。
具体地,若步骤S91得到的校验结果为校验失败,则第二服务端按照预设的告警方式进行同步数据异常告警。
按照预设的告警方式具体可以是通过向预设的监控平台发送告警信息的方式进行同步数据异常告警,按照预设的告警方式还可以是通过日志的方式记录告警信息,其具体可以根据实际应用的需要进行设置,此处不做限制。
其中,告警信息可以包括同步时间、待同步数据的内容、目标数据库的标识信息、待同步数据对应的目标数据源的数据源ID和目标数据表的数据表ID等。
本实施例中,第二服务端通过对待同步数据进行准确性校验,确保同步到目标数据库的数据正确有效,从而提高数据同步的准确性,在准确性校验的校验结果为检验失败时,第二服务端按照预设的告警方式进行同步数据异常告警,能够及时记录未成功同步的数据,以便相关运维人员可以及时进行问题分析和修改维护。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种数据同步装置,该数据同步装置与上述实施例中第一服务端执行的数据同步方法一一对应。如图5所示,该数据同步装置包括:获取模块51、监听模块52、计算模块53、查询模块54、封装模块54和发送模块56。各功能模块详细说明如下:
获取模块51,用于获取预先配置的数据源表和同步数据表;
监听模块52,用于从数据源表中获取目标数据源,并根据目标数据源从同步数据表中获取目标数据源中的目标数据表,对目标数据表进行监听,获取数据变化信息;
计算模块53,用于根据数据变化信息计算数据同步条数;
查询模块54,用于采用分页查询方式确定数据同步条数对应的分页数量,以及每页的同步数据;
封装模块55,用于将每页的同步数据封装成每页对应的消息中间件报文;
发送模块56,用于根据分页数量,从预设的线程池中为每个消息中间件报文分配空闲线程,并采用多线程的方式将消息中间件报文发送到预设的分布式消息中间件。
进一步地,计算模块53包括:
字段获取子模块531,用于获取数据变化信息对应的目标数据表的同步标识字段;
保留子模块532,用于若同步标识字段的取值为需要同步,则保留数据变化信息;
丢弃子模块533,用于若同步标识字段的取值为不需要同步,则丢弃数据变化信息;
条数计算子模块534,用于根据保留的数据变化信息计算数据同步条数。
进一步地,该数据同步装置还包括:
任务创建模块57,用于使用定时任务框架创建定时数据同步任务;
计算模块53还包括:
任务触发子模块530,用于若定时数据同步任务被触发,则根据数据变化信息计算数据同步条数。
在一实施例中,提供一种数据同步装置,该数据同步装置与上述实施例中第二服务端执行的数据同步方法一一对应。如图6所示,该数据同步装置包括:接收模块61、订阅模块62和同步模块63。各功能模块详细说明如下:
接收模块61,用于接收分布式消息中间件发送的订阅消息;
订阅模块62,用于从订阅消息中获取待同步数据;
同步模块63,用于将待同步数据同步到目标数据库。
进一步地,同步模块63包括:
校验子模块631,用于对待同步数据进行准确性校验,得到校验结果;
成功子模块632,用于若校验结果为检验成功,则将待同步数据同步到目标数据库;
失败子模块633,用于若校验结果为检验失败,则按照预设的告警方式进行同步数据异常告警。
关于数据同步装置的具体限定可以参见上文中对于数据同步方法的限定,在此不再赘述。上述数据同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据同步方法中第一服务端或者第二服务端执行的步骤。
在一实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中数据同步方法中第一服务端或者第二服务端执行的步骤,例如图2所示的步骤S1至步骤S9中第一服务端或第二服务端执行的步骤。或者,处理器执行计算机程序时实现上述实施例中数据同步装置的各模块/单元的功能,例如图5所示模块51至模块56的功能,或者图6所示模块61至模块63的功能。为避免重复,此处不再赘述。
在一实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例中数据同步方法中第一服务端或者第二服务端执行的步骤,或者,该计算机程序被处理器执行时实现上述装置实施例中数据同步装置中各模块/单元的功能。为避免重复,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (8)
1.一种数据同步方法,其特征在于,所述数据同步方法包括第一服务端执行的如下步骤:
获取预先配置的数据源表和同步数据表;
从所述数据源表中获取目标数据源,并根据所述目标数据源从所述同步数据表中获取所述目标数据源中的目标数据表,对所述目标数据表进行监听,获取数据变化信息;其中,当监听到目标数据表的增删改操作时,获取增删改操作导致的数据变化信息;
根据所述数据变化信息计算数据同步条数;
采用分页查询方式确定所述数据同步条数对应的分页数量,以及每页的同步数据;
将每页的所述同步数据封装成每页对应的消息中间件报文;
根据所述分页数量,从预设的线程池中为每个所述消息中间件报文分配空闲线程,并采用多线程的方式将所述消息中间件报文发送到预设的分布式消息中间件;
所述数据同步方法包括第二服务端执行的如下步骤:
接收分布式消息中间件发送的订阅消息;所述订阅消息为分布式消息中间件接收第一服务端的消息中间件报文后经过识别、解析,对消息中间件报文中的同步数据进行提取,并将提取出的同步数据重新封装;
从所述订阅消息中获取待同步数据;
将所述待同步数据同步到目标数据库。
2.如权利要求1所述的数据同步方法,其特征在于,所述根据所述数据变化信息计算数据同步条数包括:
获取所述数据变化信息对应的所述目标数据表的同步标识字段;
若所述同步标识字段的取值为需要同步,则保留所述数据变化信息;
若所述同步标识字段的取值为不需要同步,则丢弃所述数据变化信息;
根据保留的所述数据变化信息计算所述数据同步条数。
3.如权利要求1所述的数据同步方法,其特征在于,所述获取预先配置的数据源表和同步数据表之前,所述数据同步方法还包括:
使用定时任务框架创建定时数据同步任务;
所述根据所述数据变化信息计算数据同步条数还包括:
若所述定时数据同步任务被触发,则根据所述数据变化信息计算所述数据同步条数。
4.如权利要求1所述的数据同步方法,其特征在于,所述将所述待同步数据同步到目标数据库包括:
对所述待同步数据进行准确性校验,得到校验结果;
若所述校验结果为检验成功,则将所述待同步数据同步到所述目标数据库;
若所述校验结果为检验失败,则按照预设的告警方式进行同步数据异常告警。
5.一种数据同步装置,其特征在于,所述数据同步装置包括第一服务端,所述第一服务端包括:
获取模块,用于获取预先配置的数据源表和同步数据表;
监听模块,用于从所述数据源表中获取目标数据源,并根据所述目标数据源从所述同步数据表中获取所述目标数据源中的目标数据表,对所述目标数据表进行监听,获取数据变化信息;其中,当监听到目标数据表的增删改操作时,获取增删改操作导致的数据变化信息;
计算模块,用于根据所述数据变化信息计算数据同步条数;
查询模块,用于采用分页查询方式确定所述数据同步条数对应的分页数量,以及每页的同步数据;
封装模块,用于将每页的所述同步数据封装成每页对应的消息中间件报文;
发送模块,用于根据所述分页数量,从预设的线程池中为每个所述消息中间件报文分配空闲线程,并采用多线程的方式将所述消息中间件报文发送到预设的分布式消息中间件;
所述数据同步装置包括第二服务端,所述第二服务端包括:
接收模块,用于接收分布式消息中间件发送的订阅消息;所述订阅消息为分布式消息中间件接收第一服务端的消息中间件报文后经过识别、解析,对消息中间件报文中的同步数据进行提取,并将提取出的同步数据重新封装;
订阅模块,用于从所述订阅消息中获取待同步数据;
同步模块,用于将所述待同步数据同步到目标数据库。
6.如权利要求5所述的数据同步装置,其特征在于,所述计算模块包括:
字段获取子模块,用于获取所述数据变化信息对应的所述目标数据表的同步标识字段;
保留子模块,用于若所述同步标识字段的取值为需要同步,则保留所述数据变化信息;
丢弃子模块,用于若所述同步标识字段的取值为不需要同步,则丢弃所述数据变化信息;
条数计算子模块,用于根据保留的所述数据变化信息计算所述数据同步条数。
7.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述的数据同步方法。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的数据同步方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910755579.5A CN110704458B (zh) | 2019-08-15 | 2019-08-15 | 数据同步方法、装置、计算机设备及存储介质 |
PCT/CN2020/093352 WO2021027363A1 (zh) | 2019-08-15 | 2020-05-29 | 数据同步方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910755579.5A CN110704458B (zh) | 2019-08-15 | 2019-08-15 | 数据同步方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110704458A CN110704458A (zh) | 2020-01-17 |
CN110704458B true CN110704458B (zh) | 2023-04-18 |
Family
ID=69193510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910755579.5A Active CN110704458B (zh) | 2019-08-15 | 2019-08-15 | 数据同步方法、装置、计算机设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110704458B (zh) |
WO (1) | WO2021027363A1 (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704458B (zh) * | 2019-08-15 | 2023-04-18 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN111258742B (zh) * | 2020-02-17 | 2023-08-04 | 杭州依图医疗技术有限公司 | 一种数据同步的方法、系统、计算设备及存储介质 |
CN111309733A (zh) * | 2020-02-20 | 2020-06-19 | 深圳震有科技股份有限公司 | 增量数据抽取处理方法及装置、计算机设备、介质 |
CN111400397B (zh) * | 2020-02-29 | 2023-04-11 | 平安科技(深圳)有限公司 | 数据同步方法、装置、设备和计算机存储介质 |
CN111371900B (zh) * | 2020-03-13 | 2022-07-12 | 北京奇艺世纪科技有限公司 | 一种监测同步链路健康状态的方法及系统 |
CN111427920B (zh) * | 2020-03-16 | 2023-08-11 | 深圳市腾讯计算机系统有限公司 | 数据采集方法、装置、系统、计算机设备及存储介质 |
CN113407551A (zh) * | 2020-03-17 | 2021-09-17 | 北京同邦卓益科技有限公司 | 数据一致性确定方法、装置、设备及存储介质 |
CN111400407B (zh) * | 2020-04-10 | 2023-09-26 | 浙江大华技术股份有限公司 | 数据的同步方法及装置、存储介质及电子装置 |
CN111897808B (zh) * | 2020-07-15 | 2023-04-11 | 苏宁金融科技(南京)有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN112818054B (zh) * | 2020-10-15 | 2022-05-06 | 广州南天电脑系统有限公司 | 数据同步方法、装置、计算机设备和存储介质 |
CN112559548B (zh) * | 2020-12-27 | 2023-06-16 | 浙江融象数科控股有限公司 | 消息中间件的数据同步系统及方法 |
CN112699183A (zh) * | 2020-12-31 | 2021-04-23 | 浙江集享电子商务有限公司 | 数据处理方法、系统、可读存储介质及计算机设备 |
CN112925811B (zh) * | 2021-02-26 | 2024-04-02 | 北京百度网讯科技有限公司 | 数据处理的方法、装置、设备、存储介质及程序产品 |
CN112988817B (zh) * | 2021-04-12 | 2024-03-12 | 携程旅游网络技术(上海)有限公司 | 数据比对方法、系统、电子设备和存储介质 |
CN113515532B (zh) * | 2021-05-12 | 2024-01-19 | 平安国际智慧城市科技股份有限公司 | 基于数据交换的变更处理方法、装置、设备及存储介质 |
CN113407625A (zh) * | 2021-06-07 | 2021-09-17 | 北京沃东天骏信息技术有限公司 | 一种数据同步方法、装置、设备及计算机可读存储介质 |
CN113392088B (zh) * | 2021-06-07 | 2024-03-26 | 北京来看科技有限公司 | 一种数据同步方法、装置、终端及存储介质 |
CN113254535B (zh) * | 2021-06-08 | 2022-12-13 | 成都新潮传媒集团有限公司 | 一种mongodb到mysql的数据同步方法、装置及计算机可读存储介质 |
CN113377757B (zh) * | 2021-06-24 | 2023-08-25 | 杭州数梦工场科技有限公司 | 数据对账方法、装置、电子设备及机器可读存储介质 |
CN113360491B (zh) * | 2021-06-30 | 2024-03-29 | 杭州数梦工场科技有限公司 | 数据质量检验方法、装置、电子设备及存储介质 |
CN113486010A (zh) * | 2021-07-01 | 2021-10-08 | 远光软件股份有限公司 | 数据库的同步方法、装置、服务器和存储介质 |
CN113612837B (zh) * | 2021-07-30 | 2023-08-08 | 杭州朗和科技有限公司 | 数据处理方法、装置、介质和计算设备 |
CN113656221B (zh) * | 2021-08-18 | 2024-06-07 | 中国邮政储蓄银行股份有限公司 | 数据的处理方法、装置、计算机可读存储介质及处理器 |
CN113901141B (zh) * | 2021-10-11 | 2022-08-05 | 京信数据科技有限公司 | 一种分布式数据同步方法及系统 |
CN114185896B (zh) * | 2021-12-14 | 2024-07-09 | 中国平安财产保险股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114510470A (zh) * | 2022-02-14 | 2022-05-17 | 平安普惠企业管理有限公司 | 基于元数据的数据治理方法、装置、设备及存储介质 |
CN114510536A (zh) * | 2022-02-16 | 2022-05-17 | 平安普惠企业管理有限公司 | 数据校验方法、装置、计算机设备及存储介质 |
CN114785809A (zh) * | 2022-03-29 | 2022-07-22 | 医渡云(北京)技术有限公司 | 数据同步方法、装置、电子设备及计算机可读存储介质 |
CN114584575B (zh) * | 2022-05-06 | 2022-07-19 | 中海油田服务股份有限公司 | 船舶管理体系中的船岸通信方法及系统 |
CN115190113B (zh) * | 2022-07-07 | 2024-04-16 | 武汉蔚能电池资产有限公司 | 数据同步方法、设备及存储介质 |
CN116303702B (zh) * | 2022-12-27 | 2024-04-05 | 易方达基金管理有限公司 | 一种基于etl的数据并行处理方法、装置、设备和存储介质 |
CN115904736B (zh) * | 2022-12-30 | 2024-06-28 | 壹沓科技(上海)有限公司 | 任务执行方法、装置、存储介质及计算机设备 |
CN116016032B (zh) * | 2023-01-06 | 2023-08-11 | 广西电子口岸有限公司 | 一种海关业务报文封装方法 |
CN115730016B (zh) * | 2023-01-28 | 2023-09-19 | 北京国科天迅科技有限公司 | 数据同步方法、系统、装置、计算机设备和存储介质 |
CN116541182A (zh) * | 2023-02-23 | 2023-08-04 | 中国人民财产保险股份有限公司 | 一种检查核对消费系统消费消息的方法、装置及设备 |
CN116401090B (zh) * | 2023-04-23 | 2024-01-30 | 中航信移动科技有限公司 | 一种基于数据更新的异常数据源确定方法 |
CN116401319B (zh) * | 2023-06-09 | 2023-09-12 | 建信金融科技有限责任公司 | 数据同步方法及装置、电子设备和计算机可读存储介质 |
CN116610664B (zh) * | 2023-07-19 | 2024-01-16 | 深圳高灯计算机科技有限公司 | 数据监控方法、装置、计算机设备、存储介质和产品 |
CN117708239A (zh) * | 2023-12-14 | 2024-03-15 | 阳光凯讯(北京)科技股份有限公司 | 一种分页同步数据的方法、系统及电子设备 |
CN118051564B (zh) * | 2024-04-16 | 2024-07-09 | 天津南大通用数据技术股份有限公司 | 一种基于Quart的分布式异步数据同步方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699541A (zh) * | 2015-03-30 | 2015-06-10 | 北京奇虎科技有限公司 | 同步数据的方法、装置、数据传输组件及系统 |
CN106557592A (zh) * | 2016-12-02 | 2017-04-05 | 中铁程科技有限责任公司 | 数据同步方法、装置及服务器集群 |
CN107301196A (zh) * | 2017-05-03 | 2017-10-27 | 北京小度信息科技有限公司 | 数据同步方法、装置、设备及监控服务器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557497A (zh) * | 2015-09-25 | 2017-04-05 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN105824865A (zh) * | 2015-12-09 | 2016-08-03 | 广东亿迅科技有限公司 | 一种分布式数据库间数据同步系统 |
CN110704458B (zh) * | 2019-08-15 | 2023-04-18 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
-
2019
- 2019-08-15 CN CN201910755579.5A patent/CN110704458B/zh active Active
-
2020
- 2020-05-29 WO PCT/CN2020/093352 patent/WO2021027363A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699541A (zh) * | 2015-03-30 | 2015-06-10 | 北京奇虎科技有限公司 | 同步数据的方法、装置、数据传输组件及系统 |
CN106557592A (zh) * | 2016-12-02 | 2017-04-05 | 中铁程科技有限责任公司 | 数据同步方法、装置及服务器集群 |
CN107301196A (zh) * | 2017-05-03 | 2017-10-27 | 北京小度信息科技有限公司 | 数据同步方法、装置、设备及监控服务器 |
Also Published As
Publication number | Publication date |
---|---|
WO2021027363A1 (zh) | 2021-02-18 |
CN110704458A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704458B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN110636130B (zh) | 延时消息处理方法、装置、计算机设备和存储介质 | |
CN107291547B (zh) | 一种任务调度处理方法、装置及系统 | |
US6622155B1 (en) | Distributed monitor concurrency control | |
US10686728B2 (en) | Systems and methods for allocating computing resources in distributed computing | |
CN108563502B (zh) | 一种任务调度方法和装置 | |
CN110334126B (zh) | 基于Spring MVC的定时任务处理方法、装置和计算机设备 | |
CN109766253B (zh) | 一种性能数据发送方法、装置、计算机设备及存储介质 | |
WO2022105138A1 (zh) | 去中心化的任务调度方法、装置、设备及介质 | |
CN110750343B (zh) | 集群系统定时任务调度控制方法及集群系统 | |
CN109241182B (zh) | 大数据实时同步方法、装置、计算机设备及存储介质 | |
CN111225007B (zh) | 数据库连接方法、装置和系统 | |
CN110704172B (zh) | 集群系统定时任务调度方法及集群系统 | |
CN103716384A (zh) | 跨数据中心实现云存储数据同步的方法和装置 | |
CN110866011B (zh) | 数据表同步方法、装置、计算机设备和存储介质 | |
CN111580948A (zh) | 任务调度方法、装置及计算机设备 | |
CN113946427A (zh) | 用于多操作系统的任务处理方法、处理器及存储介质 | |
CN116521363B (zh) | 一种代码打包方法、计算机设备及存储介质 | |
CN113064732A (zh) | 一种分布式系统及其管理方法 | |
CN114035928B (zh) | 分布式任务分配处理方法 | |
CN107885593B (zh) | 用户认证方法和装置 | |
CN112559445B (zh) | 数据写入方法及装置 | |
US20180067859A1 (en) | Selective allocation of cpu cache slices to database objects | |
CN111435356A (zh) | 数据特征提取方法、装置、计算机设备以及存储介质 | |
CN110737520B (zh) | 集群系统调度控制定时任务的方法及集群系统 |
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 |