CN110502584B - 数据同步的方法和装置 - Google Patents
数据同步的方法和装置 Download PDFInfo
- Publication number
- CN110502584B CN110502584B CN201910803337.9A CN201910803337A CN110502584B CN 110502584 B CN110502584 B CN 110502584B CN 201910803337 A CN201910803337 A CN 201910803337A CN 110502584 B CN110502584 B CN 110502584B
- Authority
- CN
- China
- Prior art keywords
- data
- forwarding
- server
- period
- time
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据同步的方法和装置,属于互联网技术领域。所述方法包括:每当接收第二转发服务器发送的数据时,对接收的数据进行存储;向所述第二转发服务器返回第一确认接收消息,以使所述第二转发服务器接收到所述第一确定接收消息后,向所述第一转发服务器发送下一个数据;每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据发送给目标数据库服务器。采用本申请,可以提高数据同步效率。
Description
技术领域
本申请涉及互联网技术领域,特别涉及一种数据同步的方法和装置。
背景技术
目前,数据库作为数据存储的主要形式被各行各业广泛应用。企业应用中为了使数据库有较好的读写性能,一般会采用读写分离的方式来部署数据库,即部署源数据库(也可称为主数据库)用来写数据,部署目标数据库(也可称为从数据库)用来读数据。采用读写分离的方式部署数据库,最重要的一点就是保证源数据库和目标数据库中数据的一致性。
在相关技术中,在源数据库和目标数据库之间还有配置了数据转发中间件的服务器(以下简称为第二转发服务器)和配置了数据转发服务的服务器(以下简称为第一转发服务器),其中,第二转发服务器用来从源数据库获取数据并发送给数据转发服务服务器,第一转发服务器用来将第二转发服务器发送的数据转发给目标数据库。第二转发服务器每从源数据库中获取到一条数据,就会将获取到的该条数据发送给第一转发服务器,第一转发服务器接收到该条数据后,将该条数据转发给目标数据库,目标数据库接收到该条数据后,会向第一转发服务器返回确认接收消息,第一转发服务器接收到该确认接收消息后,再向第二转发服务器返回确认接收消息,至此便完成了一条数据从源数据库到目标数据库的同步。第二转发服务器在接收到第一转发服务器返回的对一条数据的确认接收消息后,会向第一转发服务器发送下一条消息。
在实现本申请的过程中,申请人发现相关技术至少存在以下问题:
上述将数据从源数据库同步到目标数据库的方法中,第二转发服务器只有在接收到确认接收消息后,才会向第二转发服务器发送下一条数据,因此每条数据的同步都会有较长的等待,这样由于大量时间浪费在等待上,使数据同步效率较低。
发明内容
为了解决数据同步效率低的问题,本申请实施例提供了一种数据同步的方法和装置。所述技术方案如下:
第一方面,提供了一种数据同步的方法,所述方法应用于第一转发服务器,所述方法包括:
每当接收第二转发服务器发送的数据时,对接收的数据进行存储;
向所述第二转发服务器返回第一确认接收消息,以使所述第二转发服务器接收到所述第一确定接收消息后,向所述第一转发服务器发送下一个数据;
每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据发送给目标数据库服务器。
可选的,所述对接收的数据进行存储,包括:
对接收的数据分配顺序标识,将所述数据和顺序标识对应存储;
所述每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据发送给目标数据库服务器,包括:
每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据和对应的顺序标识,发送给目标数据库服务器。
可选的,所述每当接收第二转发服务器发送的数据时,对接收的数据进行存储,包括:每当接收第二转发服务器发送的数据和所述数据对应的写入时间时,对接收的数据和所述数据对应的写入时间对应进行存储,其中,所述数据对应的写入时间为所述数据写入所述源数据库服务器中的时间;
所述每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据发送给目标数据库服务器,包括:每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据和所述数据对应的写入时间,发送给目标数据库服务器;
所述方法还包括:
每当达到预设的检查周期时,确定至少一个历史的检查时间段;
向所述源数据库服务器和所述目标数据库服务器,分别发送对应每个检查时间段的查询请求,接收所述源数据库服务器发送的每个检查时间段对应的第一数据特征信息,以及所述目标数据库服务器发送的每个检查时间段对应的第二数据特征信息;
对于每个检查时间段,如果所述检查时间段对应的第一数据特征信息与第二数据特征信息不同,则从所述源数据库服务器中获取对应的写入时间在所述检查时间段内的数据,发送给所述目标数据库服务器。
可选的,所述数据包括业务标识和内容值,所述每个检查时间段对应的第一数据特征信息为每个检查时间段对应的检查基准数据中每种内容值的数量,所述检查时间段对应的检查基准数据为在所述源数据库服务器存储的数据中对应的写入时间在所述检查时间段内的数据,所述每个检查时间段对应的第二数据特征信息为每个检查时间段对应的待检查数据中每种内容值的数量,所述检查时间段对应的待检查数据为在所述目标数据库服务器存储的数据中对应的写入时间在所述检查时间段内的数据。
可选的,所述确定至少一个历史的检查时间段,包括:
确定当前时间点之前第一预设时长的第一时间点,将所述第一时间点之前第二预设时长的时间段,确定为检查时间段。
可选的,所述确定至少一个历史的检查时间段,包括:
确定当前时间点之前第一预设时长的第一时间点;
确定所述当前时间点之前第二预设时长的第二时间点;
将所述第一时间点之前第三预设时长的时间段和第二时间点之前第四预设时长的时间段,分别确定为检查时间段。
可选的,所述方法应用于目标数据库服务器,所述方法包括:
接收第一转发服务器发送的数据和所述数据对应的顺序标识,其中,所述数据包括业务标识和内容值;
如果本地未存储与所述数据具有相同业务标识的目标数据,则存储所述数据;
如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据对应的顺序标识在所述数据对应的顺序标识之前,则将所述目标数据更新为所述数据;
如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据的顺序标识不在所述数据的顺序标识之前,则丢弃所述数据。
第二方面,提供了一种数据同步的方法,所述方法应用于目标数据库服务器,所述方法包括:
接收第一转发服务器发送的数据和所述数据对应的顺序标识,其中,所述数据包括业务标识和内容值;
如果本地未存储与所述数据具有相同业务标识的目标数据,则存储所述数据;
如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据对应的顺序标识在所述数据对应的顺序标识之前,则将所述目标数据更新为所述数据;
如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据的顺序标识不在所述数据的顺序标识之前,则丢弃所述数据。
第三方面,提供了一种数据同步的装置,所述装置应用于第一转发服务器,所述装置包括:
存储模块,用于每当接收第二转发服务器发送的数据时,对接收的数据进行存储;
发送模块,用于向所述第二转发服务器返回第一确认接收消息,以使所述第二转发服务器接收到所述第一确定接收消息后,向所述第一转发服务器发送下一个数据;
转发模块,用于每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据发送给目标数据库服务器。
可选的,所述存储模块,用于:
对接收的数据分配顺序标识,将所述数据和顺序标识对应存储;
所述转发模块,用于:
每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据和对应的顺序标识,发送给目标数据库服务器。
可选的,所述存储模块,用于:每当接收第二转发服务器发送的数据和所述数据对应的写入时间时,对接收的数据和所述数据对应的写入时间对应进行存储,其中,所述数据对应的写入时间为所述数据写入所述源数据库服务器中的时间;
所述转发模块,用于:每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据和所述数据对应的写入时间,发送给目标数据库服务器;
所述装置还包括:
检查模块,用于每当达到预设的检查周期时,确定至少一个历史的检查时间段,向所述源数据库服务器和所述目标数据库服务器,分别发送对应每个检查时间段的查询请求,接收所述源数据库服务器发送的每个检查时间段对应的第一数据特征信息,以及所述目标数据库服务器发送的每个检查时间段对应的第二数据特征信息,对于每个检查时间段,如果所述检查时间段对应的第一数据特征信息与第二数据特征信息不同,则从所述源数据库服务器中获取对应的写入时间在所述检查时间段内的数据,发送给所述目标数据库服务器。
可选的,所述数据包括业务标识和内容值,所述每个检查时间段对应的第一数据特征信息为每个检查时间段对应的检查基准数据中每种内容值的数量,所述检查时间段对应的检查基准数据为在所述源数据库服务器存储的数据中对应的写入时间在所述检查时间段内的数据,所述每个检查时间段对应的第二数据特征信息为每个检查时间段对应的待检查数据中每种内容值的数量,所述检查时间段对应的待检查数据为在所述目标数据库服务器存储的数据中对应的写入时间在所述检查时间段内的数据。
可选的,所述检查模块,用于:
确定当前时间点之前第一预设时长的第一时间点,将所述第一时间点之前第二预设时长的时间段,确定为检查时间段。
可选的,所述检查模块,用于:
确定当前时间点之前第一预设时长的第一时间点,确定所述当前时间点之前第二预设时长的第二时间点,将所述第一时间点之前第三预设时长的时间段和第二时间点之前第四预设时长的时间段,分别确定为检查时间段。
第四方面,提供了一种数据同步的装置,所述装置应用于目标数据库服务器,所述装置包括:
接收模块,用于接收第一转发服务器发送的数据和所述数据对应的顺序标识,其中,所述数据包括业务标识和内容值;
存储模块,用于如果本地未存储与所述数据具有相同业务标识的目标数据,则存储所述数据;
更新模块,用于如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据对应的顺序标识在所述数据对应的顺序标识之前,则将所述目标数据更新为所述数据,如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据的顺序标识不在所述数据的顺序标识之前,则丢弃所述数据。
第五方面,提供了一种第一转发服务器,所述第一转发服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上述第一方面所述的数据同步的方法。
第六方面,提供了一种目标数据库服务器,所述目标数据库服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令所述处理器加载并执行以实现如上述第一方面所述的数据同步的方法。
第七方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上述第一方面所述的数据同步的方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例中,第一转发服务器每当接收到第二转发服务器发送的数据时,会对接收到的数据进行存储,无需等数据库服务器确认接收该数据,直接给第二转发服务器返回确认接收消息那么,第二转发服务器接收到该确认接收消息后,就可以直接向第一转发服务器发送下一个数据了。第一转发服务器在预设转发周期向目标数据库服务器发送数据。在本方法中,省去了等待数据库服务器接收数据并返回确认接收消息的过程,可以提高数据同步的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境示意图;
图2是本申请实施例提供的一种数据同步的方法的流程图;
图3是本申请实施例提供的一种数据同步的方法的流程图;
图4是本申请实施例提供的一种数据同步的方法的流程图;
图5是本申请实施例提供的一种数据同步的装置的结构示意图;
图6是本申请实施例提供的一种数据同步的装置的结构示意图;
图7是本申请实施例提供的一种第一转发服务器结构示意图;
图8是本申请实施例提供的一种目标数据库服务器结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例提供了一种数据同步的方法,该方法可以由服务器实现。其中,服务器可以用于接收、存储和转发数据。如图1所示,示例性的给出了本申请实施例的一种实施场景示意图,在该实施场景中包括有存储源数据的源数据库服务器、部署有数据转发中间件的第二转发服务器、部署有数据转发服务的第一转发服务器以及用于存储同步数据的目标数据库服务器,其中,源数据库服务器可以为mysql(my Structured Query Language,my结构化查询语言)数据库服务器,目标数据库服务器可以为elasticsearch服务器。
以外卖类应用程序中的订单数据为例,建立订单数据后,会存储在源数据库服务器,源数据服务器需要将订单数据同步到目标数据库服务器中,以便后续查询使用。在此过程中,就可以采用本申请实施例提供的方法来实现数据同步。
如图2所示,该方法可以由第一转发服务器实现,该方法的处理流程可以包括如下的步骤:
步骤201、每当接收第二转发服务器发送的数据时,对接收的数据进行存储。
步骤202、向第二转发服务器返回第一确认接收消息,以使第二转发服务器接收到第一确定接收消息后,向第一转发服务器发送下一个数据。
步骤203、每当达到预设的转发周期时,将当前转发周期内存储的第二转发服务器发送的数据发送给目标数据库服务器。
如图3所示,该方法可以由目标数据库服务器实现,该方法的处理流程可以包括如下的步骤:
步骤301、接收第一转发服务器发送的数据和数据对应的顺序标识,其中,数据包括业务标识和内容值。
步骤302、如果本地未存储与该数据具有相同业务标识的目标数据,则存储该数据。
步骤303、如果本地存储有与该数据具有相同业务标识的目标数据,且该目标数据对应的顺序标识在该数据对应的顺序标识之前,则将该目标数据更新为该数据。
如图4所示,该方法可以由源数据库服务器、第一转发服务器、第二转发服务器和目标数据库服务器实现,该方法的处理流程可以包括如下的步骤:
步骤401、第二转发服务器从所述源数据库服务器获取数据。
在实施中,第二转发服务器中部署有数据转发中间件,该数据转发中间件可以为canal中间件。数据转发中间件可以从源数据库服务器中拉取数据,具体拉取数据的方式可以为直接查询、解析源数据库服务器日志等。例如,该源数据库服务器存储订单数据,每次有订单数据写入源数据库服务器后,源数据服务器会生成日志,第二转发服务器可以通过同步解析该日志,来获取订单数据,除此之外,第二转发服务器还可以每过预设时间间隔向数据库服务器查询一次订单数据,并获取新写入的订单数据。
步骤402、第二转发服务器将获取的数据发送给第一转发服务器。
在实施中,第二转发服务器将获取的数据发送给第一转发服务器,在发送数据时,第二转发服务器可以逐条转发,每转发完一条数据后,只有在接收到第一转发服务器返回的确认接收消息才会转发下一条数据。
在一种可能的实现方式中,第二转发服务器向源数据库服务器获取数据时,还可以同时获取该数据对应的写入时间,该写入时间为数据写入源数据库服务器中的时间。相应的,第二转发服务器在向第一转发服务器发送数据时,可以将数据对应的写入时间同时发送给第一转发服务器。
步骤403、第一转发服务器每当接收第二转发服务器发送的数据时,对接收的数据进行存储。
在实施中,第一转发服务器每当接收到第二转发服务器发送的数据时,可以将数据存储在自己的消息队列中。
在一种可能的实现方式中,对应于第二转发服务器发送数据和数据对应的写入时间的情况,第一转发服务器在接收到第二转发服务器发送的数据时,还可以接收到数据对应的写入时间。那么,第一转发服务器可以将接收到的数据和数据对应的写入时间对应存储。
在另一种可能的实现方式中,第一转发服务器对接收的数据分配顺序标识,并将数据和顺序标识对应存储。
其中,顺序标识可以为递增的数字,一般也可以称该顺序标识为版本号。
步骤404、第一转发服务器向第二转发服务器返回第一确认接收消息。
在实施中,第一转发服务器在将接收到的数据存储后,要向第一确认接收消息,以通知第二转发服务器数据已接收。
步骤405、第二转发服务器接收到第一确定接收消息后,向第一转发服务器发送下一个数据。
步骤406、第一转发服务器每当达到预设的转发周期时,将当前转发周期内存储的第二转发服务器发送的数据发送给目标数据库服务器。
在实施中,第一转发服务器每当达到预设的转发周期时,会将该转发周期内存储的数据转发给目标数据库服务器,对于已经转发给目标数据库服务器的数据在第一转发服务器中可以删除。
在一种可能的实现方式中,对应于上述第二转发服务器会向第一转发服务器发送数据和数据对应的写入时间,相应的,在步骤406中的处理可以如下:第一转发服务器每当达到预设的转发周期时,将当前转发周期内存储的第二转发服务器发送的数据和数据对应的写入时间,发送给目标数据库服务器。
在另一种可能的实现方式中,对应于上述第一转发服务器会给接收到的数据分配顺序标识,相应的,在步骤406中的处理可以如下:第一转发服务器每当达到预设的转发周期时,将当前转发周期内存储的第二转发服务器发送的数据和对应的顺序标识,发送给目标数据库服务器。
在又一种可能的实现方式中,结合上述两种可能的实现方式,相应的,在步骤406中的处理可以如下:第一转发服务器每当达到预设的转发周期时,将当前转发周期内存储的第二转发服务器发送的数据、对应的顺序标识和数据对应的写入时间,发送给目标数据库服务器。
步骤407、目标数据库服务器接收第一转发服务器发送的数据,并对接收到的数据进行存储或者对已存储的数据进行更新。
在一种可能的实现方式中,目标数据库服务器在接收第一转发服务器发送的数据时,还会接收到该数据对应的顺序标识,目标数据库服务器可以根据该顺序标识来判断,该数据该如何处理,相应的在步骤407的处理可以如下:目标数据库服务器接收第一转发服务器发送的数据和所述数据对应的顺序标识,其中,数据包括业务标识和内容值;如果本地未存储与该数据具有相同业务标识的目标数据,则存储该数据;如果本地存储有与该数据具有相同业务标识的目标数据,且该目标数据对应的顺序标识在该数据对应的顺序标识之前,则将该目标数据更新为该数据;如果本地存储有与该数据具有相同业务标识的目标数据,且该目标数据的顺序标识不在该数据的顺序标识之前,则丢弃该数据。
在实施中,因为第一转发服务器是每达到预设的转发周期会将该周期内存储的数据转发给目标数据库服务器,而目标数据库服务器在存储数据时,是有相应的更新机制的,对于具体同一业务标识的两数据,在后存储的数据会覆盖在前存储的数据,这样就可能会造成数据无法同步的问题。下面以数据为订单数据为例进行说明。
对于订单数据业务标识可以为订单号,内容值可以为该订单号对应的订单状态,一般订单状态有新建和完成两种,对于同一订单号的订单数据来说,内容值为新建的订单数据存储到源数据库的时间一定会早于内容值为完成的订单数据存储到源数据库的时间。那么,对于同一订单号的订单数据来说,只要有内容值为完成的订单数据存储到源数据库,在源数据库中就会将该订单号对应的内容值新建的订单数据更新为内容值为完成的订单数据,具体的更新方法可以为将同一订单号对应的内容值为新建的订单数据删除,并存储内容值为完成的订单数据,也可以直接订单数据的内容值改写为完成。相应的,在目标数据库中也会有同样的存储机制,但是由于第一转发服务器在向目标数据库转发订单数据时,是批量转发的,那么,对于订单号相同的订单数据有可能会出现内容值为完成的订单数据早于内容值为新建的订单数据存储到目标数据库服务器,这样,在存储内容值为新建的订单数据时,会将内容值为完成的订单数据更新为内容值为新建的订单数据,而该订单号的订单数据在源数据库服务器中内容值为完成,则数据同步未成功。
为了解决上述问题,本申请实施例在对于数据存储到目标数据库时,会进行如下判断:如果本地未存储与该数据具有相同业务标识的目标数据,则存储该数据。如果本地存储有与该数据具有相同业务标识的目标数据,且该目标数据对应的顺序标识该数据对应的顺序标识之前,即,该目标数据对应的顺序标识小于数据对应的顺序标识,则将该目标数据更新为该数据。如果本地存储有与该数据具有相同业务标识的目标数据,且该目标数据的顺序标识不在该数据的顺序标识之前,即,该目标数据的顺序标识大于该数据的顺序标识,则丢弃该数据。
另外,本申请实施例中,还可以对于存储到目标数据库服务器的数据会进行检查,以保证其成功同步,相应的,在第一转发服务器将数据、数据对应的写入时间和数据对应的顺序标识一起发送给目标数据库服务器的基础上,还可以进行如下处理:每当达到预设的检查周期时,确定至少一个历史的检查时间段。向源数据库服务器和目标数据库服务器,分别发送对应每个检查时间段的查询请求,接收源数据库服务器发送的每个检查时间段对应的第一数据特征信息,以及目标数据库服务器发送的每个检查时间段对应的第二数据特征信息。对于每个检查时间段,如果检查时间段对应的第一数据特征信息与第二数据特征信息不同,则从源数据库服务器中获取对应的写入时间在检查时间段内的数据,发送给目标数据库服务器。
其中,每个检查时间段对应的第一数据特征信息为每个检查时间段对应的检查基准数据中每种内容值的数量,检查时间段对应的检查基准数据为在源数据库服务器存储的数据中对应的写入时间在检查时间段内的数据,每个检查时间段对应的第二数据特征信息为每个检查时间段对应的待检查数据中每种内容值的数量,检查时间段对应的待检查数据为在目标数据库服务器存储的数据中对应的写入时间在检查时间段内的数据。
在实施中,技术人员可以根据实际的业务需求,预先设置检查周期,如一分钟、三分钟、七分钟等等。每当达到预设的检查周期时,先根据当前时间点,确定出历史的检查时间段,检查时间段可以有一个或多个。对于检查时间段的时长和检查周期的设置,满足可以对于目标数据库中存储的所有数据都检查至少一遍即可,例如,预设的检查周期等于距离当前时间点最近的检查时间段的时长。对于每个检查时间段,第一转发服务器会向源数据库服务器查询对应的写入时间在该检查时间段内的检查基准数据中每种内容值的数量,向目标数据库服务器查询对应的写入时间在该检查时间段内的待检测数据中每种内容值的数量。并将查询到的检查基准数据中每种内容值的数量,以及待检测数据中每种内容值的数量带入如下公式:
其中,n为内容值的种类数,Ci为检查基准数据中第i种内容值的数量,C'i为待检查数据中第i种内容值的数量。当检查基准数据中与待检测基准数据中相同内容值的数量均相同时,则f=1,说明该检查时间段内的数据同步成功,反之,则f=0,说明该检查时间段内的数据未同步成功。此处需要说明的是,上述Ci还可以表示检查基准数据中第i种内容值对应的数据的数量,同样的,C'i也可以表示待检查数据中第i种内容值的数据的数量。下面同样以数据为订单数据为例对上述公式进行说明。
对应订单数据来说,内容值可以为订单状态,一般订单状态有新建和完成两种,则n=2,C1为检测时间段对应的检查基准数据中内容值为新建的订单数据的数量,C'1为该检测时间段对应的待检查数据中内容值为新建的订单数据的数量,C1为该检测时间段对应的检查基准数据中内容值为完成的订单数据的数量,C'2为该检测时间段对应的待检查数据中内容值为完成的订单数据的数量。当C1=C'1,C2=C'2时,说明该检查时间段内的数据同步成功。当C1≠C'1,C2=C'2,或者C2≠C'2,C1=C'1,或者C1≠C'1且C1≠C'2时,说明该检查时间段内的数据未同步成功。
对于上述f=1的情况,需要对该检查时间段内的数据重新同步,从源数据库服务器中获取对应的写入时间在该检查时间段内的数据,发送给目标数据库服务器进行存储。
对于确定检查时间段可能会有多种情况,以下列举几种进行说明:
情况一、只确定一个检查时间段,相应的,可以进行如下处理:确定当前时间点之前第一预设时长的第一时间点,将第一时间点之前第二预设时长的时间段,确定为检查时间段。
在实施中,当前时间点为9:00,第一预设时长为5分钟,那么第一时间点为8:55,第二预设时长为10分钟,则检测时间段为8:45到8:55。
情况二、可以在确定一个检查时间段的基础上,再确定出一个更早的用于复查的检测时间段,相应的,可以进行如下处理:确定当前时间点之前第一预设时长的第一时间点;确定当前时间点之前第二预设时长的第二时间点;将第一时间点之前第三预设时长的时间段和第二时间点之前第四预设时长的时间段,分别确定为检查时间段。
在实施中,当前时间点为9:00,第一预设时长为5分钟,那么第一时间点为8:55,第二预设时长为50分钟,第二时间点为8:10,第三预设时长为10分钟,第四预设时长为20分钟,则检查时间段为8:45到8:55,和7:50到8:10。
通过上述本申请实施例提供的方法,第一转发服务器每当接收到第二转发服务器发送的数据时,会对接收到的数据进行存储,无需等数据库服务器确认接收该数据,直接给第二转发服务器返回确认接收消息那么,第二转发服务器接收到该确认接收消息后,就可以直接向第一转发服务器发送下一个数据了。第一转发服务器在预设转发周期向目标数据库服务器发送数据。在本方法中,省去了等待数据库服务器接收数据并返回确认接收消息的过程,可以提高数据同步的效率。
基于相同的技术构思,本申请实施例还提供了一种数据同步的装置,如图5所示,该装置包括:存储模块510,发送模块520和转发模块530。
存储模块510,用于每当接收第二转发服务器发送的数据时,对接收的数据进行存储;
发送模块520,用于向所述第二转发服务器返回第一确认接收消息,以使所述第二转发服务器接收到所述第一确定接收消息后,向所述第一转发服务器发送下一个数据;
转发模块530,用于每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据发送给目标数据库服务器。
可选的,所述存储模块510,用于:
对接收的数据分配顺序标识,将所述数据和顺序标识对应存储;
所述转发模块530,用于:
每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据和对应的顺序标识,发送给目标数据库服务器。
可选的,所述存储模块510,用于:每当接收第二转发服务器发送的数据和所述数据对应的写入时间时,对接收的数据和所述数据对应的写入时间对应进行存储,其中,所述数据对应的写入时间为所述数据写入所述源数据库服务器中的时间;
所述转发模块530,用于:每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据和所述数据对应的写入时间,发送给目标数据库服务器;
所述装置还包括:
检查模块,用于每当达到预设的检查周期时,确定至少一个历史的检查时间段,向所述源数据库服务器和所述目标数据库服务器,分别发送对应每个检查时间段的查询请求,接收所述源数据库服务器发送的每个检查时间段对应的第一数据特征信息,以及所述目标数据库服务器发送的每个检查时间段对应的第二数据特征信息,对于每个检查时间段,如果所述检查时间段对应的第一数据特征信息与第二数据特征信息不同,则从所述源数据库服务器中获取对应的写入时间在所述检查时间段内的数据,发送给所述目标数据库服务器。
可选的,所述数据包括业务标识和内容值,所述每个检查时间段对应的第一数据特征信息为每个检查时间段对应的检查基准数据中每种内容值的数量,所述检查时间段对应的检查基准数据为在所述源数据库服务器存储的数据中对应的写入时间在所述检查时间段内的数据,所述每个检查时间段对应的第二数据特征信息为每个检查时间段对应的待检查数据中每种内容值的数量,所述检查时间段对应的待检查数据为在所述目标数据库服务器存储的数据中对应的写入时间在所述检查时间段内的数据。
可选的,所述检查模块,用于:
确定当前时间点之前第一预设时长的第一时间点,将所述第一时间点之前第二预设时长的时间段,确定为检查时间段。
可选的,所述检查模块,用于:
确定当前时间点之前第一预设时长的第一时间点,确定所述当前时间点之前第二预设时长的第二时间点,将所述第一时间点之前第三预设时长的时间段和第二时间点之前第四预设时长的时间段,分别确定为检查时间段。
基于相同的技术构思,本申请实施例还提供了一种数据同步的装置,如图6所示,该装置包括:接收模块610,存储模块620和更新模模块630。
接收模块610,用于接收第一转发服务器发送的数据和所述数据对应的顺序标识,其中,所述数据包括业务标识和内容值;
存储模块620,用于如果本地未存储与所述数据具有相同业务标识的目标数据,则存储所述数据;
更新模块630,用于如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据对应的顺序标识在所述数据对应的顺序标识之前,则将所述目标数据更新为所述数据,如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据的顺序标识不在所述数据的顺序标识之前,则丢弃所述数据。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是:上述实施例提供的数据同步的装置在进行数据同步时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据同步的装置与数据同步的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,存储介质中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述实施例中的识别动作类别的方法。例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图7是本申请实施例提供的一种第一转发服务器的结构示意图,该计算机设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)701和一个或一个以上的存储器702,其中,所述存储器702中存储有至少一条指令,所述至少一条指令由所述处理器701加载并执行以实现上述数据同步的方法。
图8是本申请实施例提供的一种目标数据库服务器的结构示意图,该计算机设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)801和一个或一个以上的存储器902,其中,所述存储器802中存储有至少一条指令,所述至少一条指令由所述处理器801加载并执行以实现上述数据同步的方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (17)
1.一种数据同步的方法,其特征在于,所述方法应用于第一转发服务器,其中,所述第一转发服务器为配置有数据转发服务的服务器,所述方法包括:
每当接收第二转发服务器发送的数据时,对接收的数据进行存储,其中,所述第二转发服务器为配置有数据转发中间件的服务器;
向所述第二转发服务器返回第一确认接收消息,以使所述第二转发服务器接收到所述第一确定接收消息后,向所述第一转发服务器发送下一个数据;
每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据发送给目标数据库服务器。
2.根据权利要求1所述的方法,其特征在于,所述对接收的数据进行存储,包括:
对接收的数据分配顺序标识,将所述数据和顺序标识对应存储;
所述每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据发送给目标数据库服务器,包括:
每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据和对应的顺序标识,发送给目标数据库服务器。
3.根据权利要求 1所述的方法,其特征在于,所述每当接收第二转发服务器发送的数据时,对接收的数据进行存储,包括:每当接收第二转发服务器发送的数据和所述数据对应的写入时间时,对接收的数据和所述数据对应的写入时间对应进行存储,其中,所述数据对应的写入时间为所述数据写入源数据库服务器中的时间;
所述每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据发送给目标数据库服务器,包括:每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据和所述数据对应的写入时间,发送给目标数据库服务器;
所述方法还包括:
每当达到预设的检查周期时,确定至少一个历史的检查时间段;
向所述源数据库服务器和所述目标数据库服务器,分别发送对应每个检查时间段的查询请求,接收所述源数据库服务器发送的每个检查时间段对应的第一数据特征信息,以及所述目标数据库服务器发送的每个检查时间段对应的第二数据特征信息;
对于每个检查时间段,如果所述检查时间段对应的第一数据特征信息与第二数据特征信息不同,则从所述源数据库服务器中获取对应的写入时间在所述检查时间段内的数据,发送给所述目标数据库服务器。
4.根据权利要求3所述的方法,其特征在于,所述数据包括业务标识和内容值,所述每个检查时间段对应的第一数据特征信息为每个检查时间段对应的检查基准数据中每种内容值的数量,所述检查时间段对应的检查基准数据为在所述源数据库服务器存储的数据中对应的写入时间在所述检查时间段内的数据,所述每个检查时间段对应的第二数据特征信息为每个检查时间段对应的待检查数据中每种内容值的数量,所述检查时间段对应的待检查数据为在所述目标数据库服务器存储的数据中对应的写入时间在所述检查时间段内的数据。
5.根据权利要求3所述的方法,其特征在于,所述确定至少一个历史的检查时间段,包括:
确定当前时间点之前第一预设时长的第一时间点,将所述第一时间点之前第二预设时长的时间段,确定为检查时间段。
6.根据权利要求3所述的方法,其特征在于,所述确定至少一个历史的检查时间段,包括:
确定当前时间点之前第一预设时长的第一时间点;
确定所述当前时间点之前第二预设时长的第二时间点;
将所述第一时间点之前第三预设时长的时间段和第二时间点之前第四预设时长的时间段,分别确定为检查时间段。
7.一种数据同步的方法,其特征在于,所述方法应用于目标数据库服务器,所述方法包括:
接收数据和所述数据对应的顺序标识,其中,所述数据是第一转发服务器在接收到所述数据并返回对应所述数据的确定接收消息的情况下发送的,所述数据包括业务标识和内容值,所述第一转发服务器为配置有数据转发服务的服务器;
如果本地未存储与所述数据具有相同业务标识的目标数据,则存储所述数据;
如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据对应的顺序标识在所述数据对应的顺序标识之前,则将所述目标数据更新为所述数据;
如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据的顺序标识不在所述数据的顺序标识之前,则丢弃所述数据。
8.一种数据同步的装置,其特征在于,所述装置应用于第一转发服务器,其中,所述第一转发服务器为配置有数据转发服务的服务器,所述装置包括:
存储模块,用于每当接收第二转发服务器发送的数据时,对接收的数据进行存储,其中,所述第二转发服务器为配置有数据转发中间件的服务器;
发送模块,用于向所述第二转发服务器返回第一确认接收消息,以使所述第二转发服务器接收到所述第一确定接收消息后,向所述第一转发服务器发送下一个数据;
转发模块,用于每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据发送给目标数据库服务器。
9.根据权利要求8所述的装置,其特征在于,所述存储模块,用于:
对接收的数据分配顺序标识,将所述数据和顺序标识对应存储;
所述转发模块,用于:
每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据和对应的顺序标识,发送给目标数据库服务器。
10.根据权利要求 8所述的装置,其特征在于,所述存储模块,用于:每当接收第二转发服务器发送的数据和所述数据对应的写入时间时,对接收的数据和所述数据对应的写入时间对应进行存储,其中,所述数据对应的写入时间为所述数据写入源数据库服务器中的时间;
所述转发模块,用于:每当达到预设的转发周期时,将当前转发周期内存储的所述第二转发服务器发送的数据和所述数据对应的写入时间,发送给目标数据库服务器;
所述装置还包括:
检查模块,用于每当达到预设的检查周期时,确定至少一个历史的检查时间段,向所述源数据库服务器和所述目标数据库服务器,分别发送对应每个检查时间段的查询请求,接收所述源数据库服务器发送的每个检查时间段对应的第一数据特征信息,以及所述目标数据库服务器发送的每个检查时间段对应的第二数据特征信息,对于每个检查时间段,如果所述检查时间段对应的第一数据特征信息与第二数据特征信息不同,则从所述源数据库服务器中获取对应的写入时间在所述检查时间段内的数据,发送给所述目标数据库服务器。
11.根据权利要求10所述的装置,其特征在于,所述数据包括业务标识和内容值,所述每个检查时间段对应的第一数据特征信息为每个检查时间段对应的检查基准数据中每种内容值的数量,所述检查时间段对应的检查基准数据为在所述源数据库服务器存储的数据中对应的写入时间在所述检查时间段内的数据,所述每个检查时间段对应的第二数据特征信息为每个检查时间段对应的待检查数据中每种内容值的数量,所述检查时间段对应的待检查数据为在所述目标数据库服务器存储的数据中对应的写入时间在所述检查时间段内的数据。
12.根据权利要求10所述的装置,其特征在于,所述检查模块,用于:
确定当前时间点之前第一预设时长的第一时间点,将所述第一时间点之前第二预设时长的时间段,确定为检查时间段。
13.根据权利要求10所述的装置,其特征在于,所述检查模块,用于:
确定当前时间点之前第一预设时长的第一时间点,确定所述当前时间点之前第二预设时长的第二时间点,将所述第一时间点之前第三预设时长的时间段和第二时间点之前第四预设时长的时间段,分别确定为检查时间段。
14.一种数据同步的装置,其特征在于,所述装置应用于目标数据库服务器,所述装置包括:
接收模块,用于接收数据和所述数据对应的顺序标识,其中,所述数据是第一转发服务器在接收到所述数据并返回对应所述数据的确定接收消息的情况下发送的,所述数据包括业务标识和内容值,所述第一转发服务器为配置有数据转发服务的服务器;
存储模块,用于如果本地未存储与所述数据具有相同业务标识的目标数据,则存储所述数据;
更新模块,用于如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据对应的顺序标识在所述数据对应的顺序标识之前,则将所述目标数据更新为所述数据,如果本地存储有与所述数据具有相同业务标识的目标数据,且所述目标数据的顺序标识不在所述数据的顺序标识之前,则丢弃所述数据。
15.一种第一转发服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求6任一项所述的数据同步的方法所执行的操作。
16.一种目标数据库服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求7所述的数据同步的方法所执行的操作。
17.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求7任一项所述的数据同步的方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910803337.9A CN110502584B (zh) | 2019-08-28 | 2019-08-28 | 数据同步的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910803337.9A CN110502584B (zh) | 2019-08-28 | 2019-08-28 | 数据同步的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110502584A CN110502584A (zh) | 2019-11-26 |
CN110502584B true CN110502584B (zh) | 2021-09-28 |
Family
ID=68588780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910803337.9A Active CN110502584B (zh) | 2019-08-28 | 2019-08-28 | 数据同步的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110502584B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114363955A (zh) * | 2020-10-14 | 2022-04-15 | 南京中兴软件有限责任公司 | 报文转发方法、报文发送方法、设备和计算机可读介质 |
CN114553895B (zh) * | 2022-04-24 | 2022-07-22 | 浙江中控技术股份有限公司 | 一种数据同步方法、系统、存储介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1964348A (zh) * | 2005-11-09 | 2007-05-16 | 大唐移动通信设备有限公司 | 一种数据传输方法和系统 |
CN101477364A (zh) * | 2008-12-29 | 2009-07-08 | 上海昊沧系统控制技术有限责任公司 | 系统数据库之间转发数据系统 |
CN103067483A (zh) * | 2012-12-25 | 2013-04-24 | 广东邮电职业技术学院 | 基于数据包的远程数据增量同步方法和装置 |
CN103678494A (zh) * | 2013-11-15 | 2014-03-26 | 北京奇虎科技有限公司 | 客户端同步服务端数据的方法及装置 |
CN104809202A (zh) * | 2015-04-24 | 2015-07-29 | 联动优势科技有限公司 | 一种数据库同步的方法和装置 |
CN109391629A (zh) * | 2018-11-23 | 2019-02-26 | 上海电科智能系统股份有限公司 | 轨道交通综合监控系统数据处理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4227621B2 (ja) * | 2003-03-20 | 2009-02-18 | ノキア シーメンス ネットワークス ゲゼルシャフト ミット ベシュレンクテル ハフツング ウント コンパニー コマンディトゲゼルシャフト | データパケットの伝送方法および送信機 |
CN101009516B (zh) * | 2006-01-26 | 2011-05-04 | 华为技术有限公司 | 一种进行数据同步的方法、系统及装置 |
CN104572672B (zh) * | 2013-10-15 | 2018-10-02 | 北大方正集团有限公司 | 异构数据库的同步方法和应用系统 |
-
2019
- 2019-08-28 CN CN201910803337.9A patent/CN110502584B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1964348A (zh) * | 2005-11-09 | 2007-05-16 | 大唐移动通信设备有限公司 | 一种数据传输方法和系统 |
CN101477364A (zh) * | 2008-12-29 | 2009-07-08 | 上海昊沧系统控制技术有限责任公司 | 系统数据库之间转发数据系统 |
CN103067483A (zh) * | 2012-12-25 | 2013-04-24 | 广东邮电职业技术学院 | 基于数据包的远程数据增量同步方法和装置 |
CN103678494A (zh) * | 2013-11-15 | 2014-03-26 | 北京奇虎科技有限公司 | 客户端同步服务端数据的方法及装置 |
CN104809202A (zh) * | 2015-04-24 | 2015-07-29 | 联动优势科技有限公司 | 一种数据库同步的方法和装置 |
CN109391629A (zh) * | 2018-11-23 | 2019-02-26 | 上海电科智能系统股份有限公司 | 轨道交通综合监控系统数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110502584A (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9779128B2 (en) | System and method for massively parallel processing database | |
CN109144785B (zh) | 用于备份数据的方法和装置 | |
CN106874281B (zh) | 实现数据库读写分离的方法和装置 | |
CN105468718B (zh) | 数据一致性处理方法、装置和系统 | |
CN110502584B (zh) | 数据同步的方法和装置 | |
CN109561151B (zh) | 数据存储方法、装置、服务器和存储介质 | |
CN108140035B (zh) | 分布式系统的数据库复制方法及装置 | |
CN113094430A (zh) | 一种数据处理方法、装置、设备以及存储介质 | |
CN112307119A (zh) | 数据同步方法、装置、设备及存储介质 | |
CN110968478A (zh) | 日志采集方法、服务器及计算机存储介质 | |
CN110019530A (zh) | 基于分布式数据库的事务处理方法及装置 | |
CN109117086B (zh) | 存储设备数据位置的处理方法、装置、设备及存储介质 | |
CN111399753A (zh) | 写入图片的方法和装置 | |
CN112000850B (zh) | 进行数据处理的方法、装置、系统及设备 | |
CN113783916B (zh) | 信息同步方法及装置 | |
CN114579559A (zh) | 数据同步方法及装置、计算机设备、存储介质 | |
CN113761052A (zh) | 数据库同步方法和装置 | |
CN112328602A (zh) | 一种数据写入Kafka的方法、装置及设备 | |
CN112711606A (zh) | 数据库访问方法、装置、计算机设备和存储介质 | |
CN116303320A (zh) | 基于日志文件的实时任务管理方法、装置、设备及介质 | |
CN112187889A (zh) | 一种数据同步方法、装置及存储介质 | |
CN116842244A (zh) | 搜索引擎数据同步方法、系统、设备和存储介质 | |
CN116304079A (zh) | 基于时序的图谱数据管理方法、设备和可读存储介质 | |
CN114297216B (zh) | 数据同步方法及其装置、计算机存储介质、电子设备 | |
CN114205354A (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 |