数据同步方法及系统与流程

文档序号:18811774发布日期:2019-10-08 23:17阅读:183来源:国知局
数据同步方法及系统与流程

本发明实施例涉及网络技术领域,特别涉及一种数据同步方法及系统。



背景技术:

随着互联网技术的发展,为用户提供可靠、稳定的服务已经成为互联网行业的基本指标,为了确保服务的可靠与稳定,通常需要搭建冗余的服务环境,因此越来越多的企业摈弃了传统的单体式服务器架构,采用双机房备份高可用架构。双机房备份高可用架构中,由主机房提供服务,在主机房遇到网络波动、故障、割接等不可抗因素时,切换到备机房,由备机房继续对外提供服务,从而确保了服务的可靠性和稳定性。

在双机房备份高可用架构中,主机房与备机房中数据的一致性尤为重要,目前通常由客户端直接汇报数据到主机房与备机房,来保证主机房与备机房中数据的一致性。

发明人发现现有技术中至少存在如下问题:在客户端汇报数据到主机房与备机房时,如果出现网络波动或者机房割接等情况下时,仍然会导致数据丢失,导致主机房与备机房中数据不一致。



技术实现要素:

本发明实施方式的目的在于提供一种数据同步方法及系统,能够在多个机房中的业务数据不一致时,及时进行业务数据的同步,确保了多个机房的业务数据的一致性。

为解决上述技术问题,本发明的实施方式提供了一种数据同步方法,应用于数据同步系统的校正组件,数据同步系统还包括与连接于校正组件的同步组件,校正组件与同步组件分别与多个机房连接;方法包括:在接收到同步组件发送的包括一个机房的业务数据的通知消息时,判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据;在判定校正组件中不存在另一个机房的与业务数据匹配的目标业务数据时,开始计时,并缓存包括业务数据的通知消息;在计时结束且未接收到包括另一个机房的目标业务数据的通知信息时,将业务数据发送到另一个机房。

本发明的实施方式还提供了一种数据同步方法,应用于数据同步系统的同步组件,数据同步系统还包括与连接于同步组件的校正组件,校正组件与同步组件分别与多个机房连接,方法包括:在获取一个机房的业务数据后,发送包括业务数据的通知消息到校正组件,以供校正组件在接收到包括业务数据的通知消息,且在校正组件中不存在另一个机房的与业务数据匹配的目标业务数据时,开始计时,并缓存包括业务数据的通知消息,并在计时结束且未接收到包括另一个机房的目标业务数据的通知信息时,将业务数据发送到另一个机房。

本发明的实施方式还提供了一种数据同步系统,包括:校正组件,以及连接于校正组件的同步组件,校正组件与同步组件分别与多个机房连接;校正组件用于执行上述第一个数据同步方法;同步组件用于执行上述第二个数据同步方法。

本发明实施方式相对于现有技术而言,同步组件在获取一个机房的业务数据后,发送至少包括该业务数据的通知消息到校正组件,校正组件在接收到包括该业务数据的通知消息后,判断校正组件中是否存在另一个机房的与该业务数据匹配的目标业务数据,若不存在,则说明另一个机房还没有收到与业务数据匹配的目标业务数据,开始计时,并缓存包括业务数据的通知消息,若在计时结束时,仍然未接收到包括另一个机房的目标业务数据的通知信息,则说明另一个机房中缺失与业务数据匹配的目标业务数据,将该业务数据发送到另一个机房,实现了业务数据的同步,即能够在多个机房中的业务数据不一致时,及时进行业务数据的同步,确保了多个机房的业务数据的一致性;同时,本发明的数据同步系统对各机房的架构零入侵。

另外,在接收到同步组件发送的包括业务数据的通知消息时,判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据,具体为:在接收到同步组件发送的包括业务数据与业务数据的时间戳的通知消息时,判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据;在判定校正组件中存在另一个机房的与业务数据匹配的目标业务数据时,判断业务数据的时间戳是否大于另一个机房的目标业务数据的时间戳;在判定业务数据的时间戳大于另一个机房的目标业务数据的时间戳时,进入开始计时,并缓存包括业务数据的通知消息的步骤。本实施方式中,增加了对另一个机房的目标业务数据与业务数据时间戳的对比,以避免二者时间戳不同导致业务数据未被同步,进一步保证了多个机房的业务数据的一致性。

另外,在接收到同步组件发送的包括业务数据的通知消息时,判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据,具体为:在接收到同步组件发送的包括业务数据与业务数据的验证值的通知消息时,判断校正组件中是否存在另一个机房的目标业务数据的验证值与业务数据的验证值的相等;若校正组件中存在另一个机房的目标业务数据的验证值与业务数据的验证值的相等,判定校正组件中存在另一个机房的与业务数据匹配的目标业务数据。本实施方式提供了一种判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据的具体实现方式。

另外,在接收到同步组件发送的包括业务数据的通知消息之后,且在判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据之前,还包括:判断校正组件中是否存在一个机房的与业务数据匹配的目标业务数据;在校正组件中不存在一个机房的与业务数据匹配的目标业务数据时,进入判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据的步骤。。本实施方式中增加了校正组件中是否存在一个机房的与业务数据匹配的目标业务数据的判断,从而能够避免重复缓存业务数据,减少了校正组件的性能消耗。

另外,在接收到同步组件发送的包括业务数据的通知消息时,判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据,具体为:在接收到同步组件发送的包括业务数据与业务数据的时间戳的通知消息时,判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据;在判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据之前,还包括:判断业务数据的时间戳是否大于一个机房的目标业务数据的时间戳;在判定业务数据的时间戳大于一个机房的目标业务数据的时间戳时,进入判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据的步骤。本实施方式中,增加了对一个机房的目标业务数据与业务数据时间戳的对比,以保证最新的业务数据能够被同步,进一步保证了多个机房的业务数据的一致性。

另外,在获取一个机房的业务数据后,发送包括业务数据的通知消息到校正组件,包括:在获取一个机房的业务数据后,判断业务数据是否合法;在判定业务数据合法时,发送至少包括业务数据的通知消息到校正组件。本实施方式中,同步组件能够对业务数据的合法性进行校验,避免非法的业务数据被同步。

另外,判断业务数据是否合法,具体为:判断业务数据的格式是否与预设格式匹配;若业务数据的格式与预设格式匹配,判定业务数据合法。本实施方式提供一种判断业务数据是否合法的具体实现方式。

另外,校正组件中设有包括多个单线程的线程池;各单线程与各业务数据一一对应;判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据,具体为:通过与业务数据对应单线程判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据;校正组件开始计时,并缓存包括业务数据的通知消息,具体为:通过与业务数据对应单线程开始计时,并缓存包括业务数据的通知消息;将业务数据发送到另一个机房,具体为:通过与业务数据对应的单线程将业务数据发送到另一个机房。本实施方式中,各包含业务数据的通知消息由业务数据对应的一个单线程进行处理,实现了通知消息的无锁化操作,从而不会出现多线程并发操作时的加锁问题,避免了加锁带来的性能损耗。

另外,每个单线程对应于一个业务数据的验证值的校验值;在接收到同步组件发送的包括业务数据的通知消息时,判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据,具体为:在接收到同步组件发送的包括业务数据与业务数据的验证值的通知消息时,判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据;在通过与业务数据对应单线程判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据之前,还包括:按预设方式计算业务数据的验证值的校验值,根据业务数据对应的校验值,选定业务数据对应的单线程。本实施方式提供了一种选定业务数据对应的单线程的具体实现方式。

另外,同步组件包括多个子组件,且多个子组件与多个机房一一对应;在获取一个机房的业务数据后,发送包括业务数据的通知消息到校正组件,具体为:通过子组件获取对应的一个机房的业务数据后,并发送至少包括业务数据的通知消息到校正组件。

另外,校正组件中预设有各机房的缓存队列;判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据,具体为:判断校正组件中的另一个机房的缓存队列中是否存在与业务数据匹配的目标业务数据;缓存包括业务数据的通知消息,具体为:在一个机房的缓存队列中缓存包括业务数据的通知消息。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是根据本发明第一实施方式中的数据同步系统的方框示意图;

图2是根据本发明第六实施方式中的数据同步方法的具体流程图;

图3是根据本发明第七实施方式中的数据同步方法的具体流程图;

图4是根据本发明第八实施方式中的数据同步方法的具体流程图;

图5是根据本发明第九实施方式中的数据同步方法的具体流程图;

图6是根据本发明第十实施方式中的数据同步方法的具体流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明的第一实施方式涉及一种数据同步系统,请参考图1,数据同步系统包括校正组件1,以及连接于校正组件1的同步组件2,校正组件1与同步组件2分别与多个机房连接,客户端(图中未示出)同步发送业务数据到各机房,图1中机房的数量为两个,分别为机房a和机房b;需要说明的是,本实施例中以及之后的实施例中均以机房的数量为两个为例进行说明。

本实施方式中,各机房均包括依次连接的接入组件3、消息中间件4以及业务处理组件5,机房的接入组件3在接收到客户端发送的业务数据时,会对业务数据进行检验,以保证该业务数据不是攻击性数据,然后再将该业务数据发送到消息中间件4,消息中间件4中的业务数据供业务处理组件5与本实施例的数据同步系统消费,校正组件1与同步组件2分别与各机房的消息中间件4连接。

同步组件2用于获取各个机房的业务数据,在获取一个机房的业务数据后,将至少包括该业务数据的通知消息发送到校正组件5;具体的,同步组件2从各机房的消息中间件4实时拉取业务数据,并将拉取的业务数据组装成固定格式的通知消息发送到校正组件1,通知消息至少包括业务数据。

在一个例子中,同步组件2包括多个子组件21;多个子组件21与多个机房一一对应;子组件21用于在获取对应的一个机房的业务数据后,发送至少包括业务数据的通知消息到校正组件1。

校正组件1用于在接收到包括业务数据的通知消息时,判断校正组件1中是否存在另一个机房的与业务数据匹配的目标业务数据;若在校正组件中不存在另一个机房的与业务数据匹配的目标业务数据,开始计时,并缓存包括业务数据的通知消息;校正组件1在计时结束且未接收到包括另一个机房的目标业务数据的通知信息时,将业务数据发送到另一个机房。

在一个例子中,校正组件1中预设有各机房的缓存队列;校正组件1具体用于在接收到包括业务数据的通知消息时,判断校正组件1中另一个机房的缓存队列中是否存在与业务数据匹配的目标业务数据;校正组件1具体用于在校正组件1中的另一个机房的缓存队列中不存在与业务数据匹配的目标业务数据时,开始计时,并在一个机房的缓存队列中缓存包括业务数据的通知消息。

下面以机房a和机房b为例,对数据同步系统进行数据同步的过程进行详细说明,具体如下:

客户端发送一个业务数据到机房a和机房b,机房a的接入组件3接收到该业务数据,并将该业务数据发送到机房a的消息中间件4,同步组件2实时从消息中间件4拉取该业务数据,并将至少包括该业务数据的通知消息发送到校正组件1,校正组件1接收到包括该业务数据的通知消息时,判断校正组件1的机房b的缓存队列中是否存在该业务数据匹配的目标业务数据,若校正组件1的机房b的缓存队列中存在与该业务数据匹配的目标业务数据,删除机房b的缓存队列中的与该业务数据匹配的目标业务数据;若校正组件1的机房b的缓存队列中不存在与该业务数据匹配的目标业务数据,基于客户端发送业务数据存在一个先后顺序,机房b接收业务数据可能存在延迟,开启预设的同步定时器,开始计时,并在机房a的缓存队列中缓存包括业务数据的通知消息;若在同步定时器的定时时间到了,即计时结束时,同步组件2仍然没有从机房b拉取到目标业务数据,即校正组件2仍然没有接收到包括机房b的目标业务数据的通知消息,则说明机房b可能因为网络波动或者机房割接等原因没有接收到客户端发送的业务数据,则将该业务数据发送到机房b的消息中间件4,以供机房b的业务处理组件5消费,保证了机房a与机房b中数据的一致性;另外,在机房b的消息中间件4接收到业务数据后,删除机房a的缓存队列中的包括业务数据的通知消息。

本实施例中,可以设置校正组件1与同步组件2在同一个服务器中,以避免网络波动影响校正组件1与同步组件2之间的交互。

本实施方式相对于现有技术而言,同步组件在获取一个机房的业务数据后,发送至少包括该业务数据的通知消息到校正组件,校正组件在接收到包括该业务数据的通知消息后,判断校正组件中是否存在另一个机房的与该业务数据匹配的目标业务数据,若不存在,则说明另一个机房还没有收到与业务数据匹配的目标业务数据,开始计时,并缓存包括业务数据的通知消息,若在计时结束时,仍然未接收到包括另一个机房的目标业务数据的通知信息,则说明另一个机房中缺失与业务数据匹配的目标业务数据,将该业务数据发送到另一个机房,实现了业务数据的同步,即能够在多个机房中的业务数据不一致时,及时进行业务数据的同步,确保了多个机房的业务数据的一致性;同时,本发明的数据同步系统对各机房的架构零入侵。

本发明的第二实施方式涉及一种数据同步系统。第二实施方式是在第一实施方式基础上的改进,主要改进之处在于:本实施方式中,增加了对目标业务数据与业务数据时间戳的对比。

请参考图1,同步组件2具体用于在获取一个机房的业务数据后,提取该业务数据的时间戳,并发送包括该业务数据与业务数据的时间戳的通知消息到校正组件1。

校正组件1用于在接收到包括业务数据与业务数据的时间戳的通知消息时,判断校正组件1中是否存在另一个机房的与业务数据匹配的目标业务数据。

校正组件1用于在判定校正组件1中存在另一个机房的与业务数据匹配的目标业务数据时,判断业务数据的时间戳是否大于另一个机房的目标业务数据的时间戳,若业务数据的时间戳大于另一个机房的目标业务数据的时间戳,开始计时,并缓存包括业务数据的通知消息。

在一个例子中,同步组件2还用于在获取一个机房的业务数据后,提取业务数据的验证值,发送至少包括业务数据与业务数据的验证值的通知消息到校正组件;

校正组件1具体用于在接收到包括业务数据与业务数据的验证值的通知消息时,判断校正组件1中是否存在另一个机房的目标业务数据的验证值与业务数据的验证值的相等;若校正组件1中存在另一个机房的目标业务数据的验证值与业务数据的验证值的相等,判定校正组件1中存在另一个机房的与业务数据匹配的目标业务数据。

下面以机房a和机房b为例,对数据同步系统进行数据同步的过程进行详细说明,具体如下:

客户端发送一个业务数据到机房a和机房b,机房a的接入组件3接收到该业务数据,并将该业务数据发送到机房a的消息中间件4,同步组件2实时从消息中间件4拉取该业务数据,对该业务数据进行解析,提取其中的验证值与时间戳,并将业务数据、业务数据的时间戳以及业务数据的验证值组装成固定格式的通知信息,然后将该通知消息发送到校正组件1,校正组件1接收到通知消息后,判断校正组件1的机房b的缓存队列中是否存在验证值与该业务数据相同的目标业务数据,若机房b的缓存队列中不存在验证值与该业务数据相同的目标业务数据,则说明机房b的缓存队列中不存在与该业务数据匹配的目标业务数据,基于客户端发送业务数据存在一个先后顺序,机房b接收业务数据可能存在延迟,开启预设的同步定时器,开始计时,并在机房a的缓存队列中缓存接收到的通知消息;若机房b的缓存队列中存在验证值与该业务数据相同的目标业务数据,则说明机房b的缓存队列中存在与该业务数据匹配的目标业务数据,判断业务数据的时间戳是否大于目标业务数据的时间戳,若业务数据的时间戳大于目标业务数据的时间戳,则说明目标业务数据并不是最新的业务数据,开启预设的同步定时器,开始计时,并在机房a的缓存队列中缓存接收到的通知消息,删除机房b的缓存队列中与业务数据匹配的目标业务数据;若业务数据的时间戳等于目标业务数据的时间戳,则说明机房a与机房b都已经处理了该业务数据,删除机房b的缓存队列中与该业务数据匹配的目标业务数据;若该业务数据的时间戳小于目标业务数据的时间戳,则丢弃该业务数据。

若在同步定时器的定时时间到了,即计时结束时,同步组件2仍然没有从机房b拉取到目标业务数据,即校正组件2仍然没有接收到包括机房b的目标业务数据的通知消息,则说明机房b可能因为网络波动或者机房割接等原因没有接收到客户端发送的业务数据,则将该业务数据发送到机房b的消息中间件4,以供机房b的业务处理组件5消费,保证了机房a与机房b中数据的一致性;另外,在机房b的消息中间件4接收到业务数据后,删除机房a的缓存队列中缓存的通知消息。

本实施方式相对于第一实施方式而言,增加了对目标业务数据与业务数据时间戳的对比,以避免二者时间戳不同导致业务数据未被同步,进一步保证了多个机房的业务数据的一致性。

本发明的第三实施方式涉及一种数据同步系统。第三实施方式是在第二实施方式基础上的改进,主要改进之处在于:本实施方式中,增加了校正组件中是否存在一个机房的与业务数据匹配的目标业务数据的判断。

请参考图1,校正组件1还用于在接收到包括业务数据的通知消息时,判断校正组件1中是否存在一个机房的与业务数据匹配的目标业务数据;

校正组件1用于在校正组件中不存在一个机房的与业务数据匹配的目标业务数据时,判断校正组件1中是否存在另一个机房的与业务数据匹配的目标业务数据。

在一个例子中,校正组件1用于在校正组件1中存在一个机房的与业务数据匹配的目标业务数据时,判断业务数据的时间戳是否大于一个机房的目标业务数据的时间戳;

校正组件1用于在业务数据的时间戳是否大于一个机房的目标业务数据的时间戳时,判断校正组件1中是否存在另一个机房的与业务数据匹配的目标业务数据。

下面以机房a和机房b为例,对数据同步系统进行数据同步的过程进行详细说明,具体如下:

客户端发送一个业务数据到机房a和机房b,机房a的接入组件3接收到该业务数据,并将该业务数据发送到机房a的消息中间件4,同步组件2实时从消息中间件4拉取该业务数据,对该业务数据进行解析,提取其中的验证值与时间戳,并将业务数据、业务数据的时间戳以及业务数据的验证值组装成固定格式的通知信息,然后将该通知消息发送到校正组件1。

校正组件1接收到通知消息后,先判断校正组件1的机房a的缓存队列中是否存在验证值与该业务数据相同的目标业务数据,若机房a的缓存队列中存在验证值与该业务数据相同的目标业务数据,则说明机房a的缓存队列中存在与该业务数据匹配的目标业务数据,再判断机房a的业务数据的时间戳是否大于机房a的目标业务数据的时间戳,若机房a的业务数据的时间戳大于机房a的目标业务数据的时间戳,删除机房a的缓存队列中的与业务数据匹配的目标业务数据;若机房a的业务数据的时间戳等于机房a的目标业务数据的时间戳,则说明该业务数据已经处理过了,直接丢弃;若机房a的业务数据的时间戳小于机房a的目标业务数据的时间戳,则说明机房a的缓存队列中的目标业务数据是最新的业务数据,丢弃当前的业务数据。

若机房a的缓存队列中不存在验证值与该业务数据相同的目标业务数据,则说明机房a的缓存队列中不存在与该业务数据匹配的目标业务数据,再判断校正组件1的机房b的缓存队列中是否存在验证值与该业务数据相同的目标业务数据,若机房b的缓存队列中不存在验证值与该业务数据相同的目标业务数据,则说明机房b的缓存队列中不存在与该业务数据匹配的目标业务数据,基于客户端发送业务数据存在一个先后顺序,机房b接收业务数据可能存在延迟,开启预设的同步定时器,开始计时,并在机房a的缓存队列中缓存接收到的通知消息;若机房b的缓存队列中存在验证值与该业务数据相同的目标业务数据,则说明机房b的缓存队列中存在与该业务数据匹配的目标业务数据,判断业务数据的时间戳是否大于机房b的目标业务数据的时间戳,若业务数据的时间戳大于机房b的目标业务数据的时间戳,则说明机房b的目标业务数据并不是最新的业务数据,开启预设的同步定时器,开始计时,并在机房a的缓存队列中缓存接收到的通知消息,删除机房b的缓存队列中与业务数据匹配的目标业务数据;若业务数据的时间戳等于目标业务数据的时间戳,则说明机房a与机房b都已经处理了该业务数据,删除机房b的缓存队列中与该业务数据匹配的目标业务数据;若该业务数据的时间戳小于目标业务数据的时间戳,则丢弃该业务数据。

若在同步定时器的定时时间到了,即计时结束时,同步组件2仍然没有从机房b拉取到目标业务数据,即校正组件2仍然没有接收到包括机房b的目标业务数据的通知消息,则说明机房b可能因为网络波动或者机房割接等原因没有接收到客户端发送的业务数据,则将该业务数据发送到机房b的消息中间件4,以供机房b的业务处理组件5消费,保证了机房a与机房b中数据的一致性;另外,在机房b的消息中间件4接收到业务数据后,删除机房a的缓存队列中缓存的通知消息。

本实施方式相对于第二实施方式而言,增加了校正组件中是否存在一个机房的与业务数据匹配的目标业务数据的判断,从而能够避免重复缓存业务数据,减少了校正组件的性能消耗;同时,增加了对一个机房的目标业务数据与业务数据时间戳的对比,以保证最新的业务数据能够被同步,进一步保证了多个机房的业务数据的一致性。需要说明的是,本实施方式也可以作为在第一实施方式基础上的改进,可以达到同样的技术效果。

本发明的第四实施方式涉及一种数据同步系统。第四实施方式是在第一实施方式基础上的改进,主要改进之处在于:同步组件2能够对业务数据的合法性进行校验。

本实施方式中,请参考图1,同步组件2还用于在获取一个机房的业务数据后,判断该业务数据是否合法,在判定该业务数据合法时,再发送至少包括业务数据的通知消息到校正组件1;在判定该业务数据非法时,直接丢弃不作处理。具体的,同步组件2在获取一个机房的业务数据后,判断业务数据的格式是否与预设格式匹配;若业务数据的格式与预设格式匹配,判定业务数据合法。

本实施方式相对于第一实施方式而言,同步组件能够对业务数据的合法性进行校验,避免非法的业务数据被同步。本实施方式还可以作为在第二或第三实施例基础上的改进,可以达到同样的技术效果。

本发明的第五实施方式涉及一种数据同步系统。第五实施方式是在第一实施方式基础上的改进,主要改进之处在于:各包含业务数据的通知消息由业务数据对应的一个单线程进行处理。

本实施例中,请参考图1,校正组件1设有包括多个单线程的线程池;各单线程与各业务数据一一对应。校正组件1具体用于在接收到包括业务数据的通知消息时,通过与业务数据对应单线程判断校正组件1中是否存在另一个机房的与业务数据匹配的目标业务数据。校正组件1具体用于在校正组件1中不存在另一个机房的与业务数据匹配的目标业务数据时,通过与业务数据对应单线程开始计时,并缓存包括业务数据的通知消息。校正组件1具体用于在计时结束且未接收到包括另一个机房的目标业务数据的通知信息时,通过与业务数据对应的单线程将业务数据发送到另一个机房。

本实施例中,同步组件2具体用于在获取一个机房的业务数据后,提取业务数据的验证值,发送至少包括业务数据与业务数据的验证值的通知消息到校正组件。校正组件1用于在接收到包括业务数据与业务数据的验证值的通知消息时,按预设方式计算业务数据的验证值的校验值,每个单线程对应于一个业务数据的验证值的校验值,从而能够根据业务数据对应的校验值,选定业务数据对应的单线程。具体的,预设方式为哈希算法,则校验值为业务数据的验证值的哈希值。

本实施方式相对于第一实施方式而言,各包含业务数据的通知消息由业务数据对应的一个单线程进行处理,实现了通知消息的无锁化操作,从而不会出现多线程并发操作时的加锁问题,避免了加锁带来的性能损耗。本实施方式还可以作为在第二至第四实施例中任一基础上的改进,可以达到同样的技术效果。

本发明第六实施方式涉及一种数据同步方法,应用于第一至第五实施例中任一的数据同步系统的校正组件。需要说明的是,本实施例实施例中,均以图1的数据同步系统为例进行说明,然不以此为限。

本实施方式的数据同步方法的具体流程如图2所示。

步骤101,在接收到同步组件发送的包括一个机房的业务数据的通知消息时,判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据。若是,则直接结束;若否,则进入步骤102。

具体而言,客户端发送一个业务数据到机房a和机房b,机房a的接入组件3接收到该业务数据,并将该业务数据发送到机房a的消息中间件4,同步组件2实时从消息中间件4拉取该业务数据,并将至少包括该业务数据的通知消息发送到校正组件1,校正组件1接收到包括该业务数据的通知消息时,判断校正组件1的机房b的缓存队列中是否存在该业务数据匹配的目标业务数据,若校正组件1的机房b的缓存队列中不存在与该业务数据匹配的目标业务数据,进入步骤102。反之,则说明机房b的缓存队列中存在与该业务数据匹配的目标业务数据,删除机房b的缓存队列中的与该业务数据匹配的目标业务数据。

在一个例子中,同步组件2包括多个子组件21;多个子组件21与多个机房一一对应;子组件21用于在获取对应的一个机房的业务数据后,发送至少包括业务数据的通知消息到校正组件1。

步骤102,开始计时,并缓存包括业务数据的通知消息。

具体而言,基于客户端发送业务数据存在一个先后顺序,机房b接收业务数据可能存在延迟,开启预设的同步定时器,开始计时,并在机房a的缓存队列中缓存包括业务数据的通知消息。

步骤103,在计时结束且未接收到包括另一个机房的目标业务数据的通知信息时,将业务数据发送到另一个机房。

具体而言,若在同步定时器的定时时间到了,即计时结束时,同步组件2仍然没有从机房b拉取到目标业务数据,即校正组件2仍然没有接收到包括机房b的目标业务数据的通知消息,则说明机房b可能因为网络波动或者机房割接等原因没有接收到客户端发送的业务数据,则将该业务数据发送到机房b的消息中间件4,以供机房b的业务处理组件5消费,保证了机房a与机房b中数据的一致性;另外,在机房b的消息中间件4接收到业务数据后,删除机房a的缓存队列中的包括业务数据的通知消息。

由于第一实施例与本实施例相互对应,因此本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,在第一实施例中所能达到的技术效果在本实施例中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。

本实施方式相对于现有技术而言,同步组件在获取一个机房的业务数据后,发送至少包括该业务数据的通知消息到校正组件,校正组件在接收到包括该业务数据的通知消息后,判断校正组件中是否存在另一个机房的与该业务数据匹配的目标业务数据,若不存在,则说明另一个机房还没有收到与业务数据匹配的目标业务数据,开始计时,并缓存包括业务数据的通知消息,若在计时结束时,仍然未接收到包括另一个机房的目标业务数据的通知信息,则说明另一个机房中缺失与业务数据匹配的目标业务数据,将该业务数据发送到另一个机房,实现了业务数据的同步,即能够在多个机房中的业务数据不一致时,及时进行业务数据的同步,确保了多个机房的业务数据的一致性;同时,本发明的数据同步系统对各机房的架构零入侵。

本发明的第七实施方式涉及一种数据同步方法。第七实施方式是在第六实施方式基础上的改进,主要改进之处在于:本实施方式中,增加了对目标业务数据与业务数据时间戳的对比。

本实施方式的数据同步方法的具体流程如图3所示。

步骤201,在接收到同步组件发送的包括业务数据与业务数据的时间戳的通知消息时,判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据。若是,则进入步骤202;若否,则进入步骤203。

具体而言,客户端发送一个业务数据到机房a和机房b,机房a的接入组件3接收到该业务数据,并将该业务数据发送到机房a的消息中间件4,同步组件2实时从消息中间件4拉取该业务数据,对该业务数据进行解析,提取其中的验证值与时间戳,并将业务数据、业务数据的时间戳以及业务数据的验证值组装成固定格式的通知信息,然后将该通知消息发送到校正组件1,校正组件1接收到通知消息后,判断校正组件1的机房b的缓存队列中是否存在验证值与该业务数据相同的目标业务数据,若机房b的缓存队列中存在验证值与该业务数据相同的目标业务数据,则说明机房b的缓存队列中存在与该业务数据匹配的目标业务数据,进入步骤202;若机房b的缓存队列中不存在验证值与该业务数据相同的目标业务数据,则说明机房b的缓存队列中不存在与该业务数据匹配的目标业务数据,进入步骤203开始计时,并缓存包括业务数据的通知消息。

步骤202,判断业务数据的时间戳是否大于另一个机房的目标业务数据的时间戳。若是,则进入步骤203;若否,则直接结束。

具体而言,校正组件1判断业务数据的时间戳是否大于目标业务数据的时间戳,若业务数据的时间戳大于目标业务数据的时间戳,则说明目标业务数据并不是最新的业务数据,进入步骤203;若业务数据的时间戳等于目标业务数据的时间戳,则说明机房a与机房b都已经处理了该业务数据,删除机房b的缓存队列中与该业务数据匹配的目标业务数据;若该业务数据的时间戳小于目标业务数据的时间戳,则丢弃该业务数据。

步骤203,开始计时,并缓存包括业务数据的通知消息。

具体而言,基于客户端发送业务数据存在一个先后顺序,机房b接收业务数据可能存在延迟,开启预设的同步定时器,开始计时,并在机房a的缓存队列中缓存包括业务数据的通知消息。

步骤204,在计时结束且未接收到包括另一个机房的目标业务数据的通知信息时,将业务数据发送到另一个机房。

具体而言,若在同步定时器的定时时间到了,即计时结束时,同步组件2仍然没有从机房b拉取到目标业务数据,即校正组件2仍然没有接收到包括机房b的目标业务数据的通知消息,则说明机房b可能因为网络波动或者机房割接等原因没有接收到客户端发送的业务数据,则将该业务数据发送到机房b的消息中间件4,以供机房b的业务处理组件5消费,保证了机房a与机房b中数据的一致性;另外,在机房b的消息中间件4接收到业务数据后,删除机房a的缓存队列中缓存的通知消息。

由于第二实施例与本实施例相互对应,因此本实施例可与第二实施例互相配合实施。第二实施例中提到的相关技术细节在本实施例中依然有效,在第二实施例中所能达到的技术效果在本实施例中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第二实施例中。

本实施方式相对于第六实施方式而言,增加了对目标业务数据与业务数据时间戳的对比,以避免二者时间戳不同导致业务数据未被同步,进一步保证了多个机房的业务数据的一致性。

本发明第八实施方式涉及一种数据同步方法,第八实施方式是在第七实施方式基础上的改进,主要改进之处在于:本实施方式中,增加了校正组件中是否存在一个机房的与业务数据匹配的目标业务数据的判断。

本实施方式的数据同步方法的具体流程如图4所示。

其中,步骤303至步骤306与步骤201至步骤204大致相同,在此不再赘述,主要不同之处在于,增加了步骤301与步骤302,具体如下:

步骤301,在接收到同步组件发送的包括业务数据与业务数据的时间戳的通知消息时,判断校正组件中是否存在一个机房的与业务数据匹配的目标业务数据;若是,则进入步骤302;若否,则进入步骤303。

具体而言,客户端发送一个业务数据到机房a和机房b,机房a的接入组件3接收到该业务数据,并将该业务数据发送到机房a的消息中间件4,同步组件2实时从消息中间件4拉取该业务数据,对该业务数据进行解析,提取其中的验证值与时间戳,并将业务数据、业务数据的时间戳以及业务数据的验证值组装成固定格式的通知信息,然后将该通知消息发送到校正组件1。校正组件1接收到通知消息后,先判断校正组件1的机房a的缓存队列中是否存在验证值与该业务数据相同的目标业务数据,若机房a的缓存队列中存在验证值与该业务数据相同的目标业务数据,则说明机房a的缓存队列中存在与该业务数据匹配的目标业务数据,进入步骤302;若机房a的缓存队列中不存在验证值与该业务数据相同的目标业务数据,则说明机房a的缓存队列中不存在与该业务数据匹配的目标业务数据,进入步骤303判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据。

步骤302,判断业务数据的时间戳是否大于一个机房的目标业务数据的时间戳。若是,则进入步骤303;若否,则直接结束。

具体而言,校正组件1判断机房a的业务数据的时间戳是否大于机房a的目标业务数据的时间戳,若机房a的业务数据的时间戳大于机房a的目标业务数据的时间戳,删除机房a的缓存队列中的与业务数据匹配的目标业务数据,进入步骤303;若机房a的业务数据的时间戳等于机房a的目标业务数据的时间戳,则说明该业务数据已经处理过了,直接丢弃;若机房a的业务数据的时间戳小于机房a的目标业务数据的时间戳,则说明机房a的缓存队列中的目标业务数据是最新的业务数据,丢弃当前的业务数据。

由于第三实施例与本实施例相互对应,因此本实施例可与第三实施例互相配合实施。第三实施例中提到的相关技术细节在本实施例中依然有效,在第三实施例中所能达到的技术效果在本实施例中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第三实施例中。

本实施方式相对于第七实施方式而言,增加了校正组件中是否存在一个机房的与业务数据匹配的目标业务数据的判断,从而能够避免重复缓存业务数据,减少了校正组件的性能消耗;同时,增加了对一个机房的目标业务数据与业务数据时间戳的对比,以保证最新的业务数据能够被同步,进一步保证了多个机房的业务数据的一致性。需要说明的是,本实施方式也可以作为在第六实施方式基础上的改进,可以达到同样的技术效果。

本发明的第九实施方式涉及一种数据同步方法,第九实施方式是在第六实施方式基础上的改进,主要改进之处在于:各包含业务数据的通知消息由业务数据对应的一个单线程进行处理。本实施例中,校正组件1中设有包括多个单线程的线程池;各单线程与各业务数据一一对应,具体的,每个单线程对应于一个业务数据的验证值的校验值;同步组件2在获取一个机房的业务数据后,提取业务数据的验证值,发送至少包括业务数据与业务数据的验证值的通知消息到校正组件1。

本实施方式的数据同步方法的具体流程如图5所示。

步骤401,在接收到同步组件发送的包括业务数据的通知消息时,通过与业务数据对应单线程判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据。

具体而言,校正组件1在接收到包括业务数据与业务数据的验证值的通知消息时,按预设方式计算业务数据的验证值的校验值,每个单线程对应于一个业务数据的验证值的校验值,从而能够根据业务数据对应的校验值,选定业务数据对应的单线程,进而通过与业务数据对应单线程判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据。其中,预设方式为哈希算法,则校验值为业务数据的验证值的哈希值。

步骤402,通过与业务数据对应单线程开始计时,并缓存包括业务数据的通知消息。

具体而言,与第一实施例中的步骤102类似,在此不再赘述。

步骤403,通过与业务数据对应的单线程将业务数据发送到另一个机房。

具体而言,与第一实施例中的步骤103类似,在此不再赘述。

由于第五实施例与本实施例相互对应,因此本实施例可与第五实施例互相配合实施。第五实施例中提到的相关技术细节在本实施例中依然有效,在第五实施例中所能达到的技术效果在本实施例中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第五实施例中。

本实施方式相对第六实施方式而言,各包含业务数据的通知消息由业务数据对应的一个单线程进行处理,实现了通知消息的无锁化操作,从而不会出现多线程并发操作时的加锁问题,避免了加锁带来的性能损耗。本实施方式还可以作为在第七或第八实施例基础上的改进,可以达到同样的技术效果。

本发明的第十实施方式涉及一种服务器,一种数据同步方法,应用于第一至第五实施例中任一的数据同步系统的同步组件。需要说明的是,本实施例实施例中,均以图1的数据同步系统为例进行说明,然不以此为限。

本实施方式的数据同步方法的具体流程如图6所示。

步骤501,在获取一个机房的业务数据后,发送包括业务数据的通知消息到校正组件,以供校正组件在接收到包括业务数据的通知消息时,判断校正组件中是否存在另一个机房的与业务数据匹配的目标业务数据;在校正组件中不存在另一个机房的与业务数据匹配的目标业务数据时,开始计时,并缓存包括业务数据的通知消息,并在计时结束且未接收到包括另一个机房的目标业务数据的通知信息时,将业务数据发送到另一个机房。

在一个例子中,同步组件2还在获取一个机房的业务数据后,判断该业务数据是否合法,在判定该业务数据合法时,再发送至少包括业务数据的通知消息到校正组件1;在判定该业务数据非法时,直接丢弃不作处理。具体的,同步组件2在获取一个机房的业务数据后,判断业务数据的格式是否与预设格式匹配;若业务数据的格式与预设格式匹配,判定业务数据合法。

由于第一至第五实施例与本实施例相互对应,因此本实施例可与第一至第五实施例互相配合实施。第一至第五实施例中提到的相关技术细节在本实施例中依然有效,在第一至第五实施例中所能达到的技术效果在本实施例中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一至第五实施例中。

本实施方式相对于现有技术而言,同步组件在获取一个机房的业务数据后,发送至少包括该业务数据的通知消息到校正组件,校正组件在接收到包括该业务数据的通知消息后,判断校正组件中是否存在另一个机房的与该业务数据匹配的目标业务数据,若不存在,则说明另一个机房还没有收到与业务数据匹配的目标业务数据,开始计时,并缓存包括业务数据的通知消息,若在计时结束时,仍然未接收到包括另一个机房的目标业务数据的通知信息,则说明另一个机房中缺失与业务数据匹配的目标业务数据,将该业务数据发送到另一个机房,实现了业务数据的同步,即能够在多个机房中的业务数据不一致时,及时进行业务数据的同步,确保了多个机房的业务数据的一致性;同时,本发明的数据同步系统对各机房的架构零入侵。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1