发明内容
本申请实施例所要解决的技术问题是提供一种数据同步方法,能够在数据同步时减小主存储与备用存储之间的延时。
相应的,本申请实施例还提供了一种数据同步装置和一种数据同步系统,用以保证上述方法的实现及应用。
为了解决上述问题,本申请公开了一种数据同步方法,包括:
接收主存储上的第一修改数据;
将所述第一修改数据加入异步消息队列;
通过消息发送线程,将所述异步消息队列中的所述第一修改数据发送至备用存储。
进一步,所述接收主存储上的第一修改数据,包括:
接收主存储上的所述第一修改数据的数据快照。
进一步,所述方法还包括:
接收积压数据查询请求;
反馈所述异步消息队列中未发送的数据。
进一步,所述方法还包括:
接收所述备用存储反馈的所述第一修改数据存储成功的信息;
删除所述第一修改数据。
进一步,所述接收所述备用存储反馈的所述第一修改数据存储成功的信息,包括:
接收所述备用存储在满足反馈条件时触发反馈的所述第一修改数据存储成功的信息,其中,所述反馈条件为在所述备用存储中成功存储所述第一修改数据的存储单元在所述备用存储的存储单元中所占的比例达到预设比例阈值。
进一步,所述通过消息发送线程,将所述异步消息队列中的所述第一修改数据发送至备用存储,包括:
通过消息发送线程,将所述异步消息队列中的所述第一修改数据发送至备用内存存储,其中,所述备用内存存储的数据过期时间大于所述主存储将数据同步到第二备用存储的延时。
本申请还公开了一种数据同步装置,包括:
数据接收单元,被配置为接收主存储发送的第一修改数据;
数据处理单元,被配置为将所述第一修改数据加入异步消息队列;
数据发送单元,被配置为通过消息发送线程,将所述异步消息队列中的所述第一修改数据发送至备用存储。
进一步,所述数据接收单元,具体被配置为接收主存储发送的所述第一修改数据的数据快照。
进一步,所述装置还包括:
请求接收单元,被配置为接收积压数据查询请求;
信息反馈单元,被配置为反馈所述异步消息队列中未发送的数据。
进一步,所述装置还包括:
信息接收单元,被配置为接收所述备用存储反馈的所述第一修改数据存储成功的信息;
数据删除单元,被配置为删除所述第一修改数据。
进一步,所述信息接收单元,具体被配置为接收所述备用存储在满足反馈条件时触发反馈的所述第一修改数据存储成功的信息,其中,所述反馈条件为在所述备用存储中成功存储所述第一修改数据的存储单元在所述备用存储的存储单元中所占的比例达到预设比例阈值。
进一步,所述数据发送单元,具体被配置为通过消息发送线程,将所述异步消息队列中的所述第一修改数据发送至备用内存存储,其中,所述备用内存存储的数据过期时间大于所述主存储将数据同步到第二备用存储的延时。
本申请还公开了一种数据同步系统,包括主存储、异步消息队列系统、备用内存存储和第二备用存储;
所述异步消息队列系统,被配置为接收所述主存储发送的第一修改数据;将所述第一修改数据加入异步消息队列;通过消息发送线程,将所述异步消息队列中的所述第一修改数据发送至所述备用内存存储;
所述第二备用存储,被配置为接收并存储所述主存储的同步数据;
其中,所述备用内存存储的数据过期时间大于所述主存储将数据同步到所述第二备用存储的延时。
与现有技术相比,本申请实施例包括以下优点:
本申请实施例通过将主存储上的修改数据加入异步消息队列,并通过开启一个或多个消息发送线程发送异步消息队列中的修改数据至备用存储,使得主备存储之间的数据同步不再受主存储资源的限制,该方法通过多个线程发送数据减小了数据同步时主备存储之间的延时。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请的一种数据同步方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,接收主存储的第一修改数据。
本申请实施例中的数据同步装置可以是介于主存储与备用存储之间,独立实现同步数据处理和发送的装置。
当主存储上发生数据修改或数据更新等数据变动时,业务系统会读取该主存储上的修改数据,记为第一修改数据,然后将该第一修改数据发送至该数据同步装置。
具体的,该业务系统可以向该数据同步装置发送第一修改数据的数据快照。主存储的数据修改和数据快照的发送在同一个事务内完成,以保证主存储上的数据修改和数据快照发送的原子性。
步骤102,将第一修改数据加入异步消息队列。
本实施例中,该数据同步装置在接收到第一修改数据后,将该第一修改数据加入异步消息队列中,如果接收到的是第一修改数据的快照,则将该快照加入异步消息队列。在数据同步时,读取该异步部消息队列中的数据进行同步。当该数据同步装置将该第一修改数据加入异步消息队列后,还可以向业务系统返回数据入库成功的信息。
该异步消息队列不仅用于放置需要进行同步的数据,还可以对外提供查询接口,以提供对异步消息队列内数据发送情况的查询。
步骤103,通过消息发送线程,将异步消息队列中的第一修改数据发送至备用存储。
在数据同步时,该数据同步装置可以通过消息发送线程将异步消息队列中的第一修改数据发送至备用存储。其中,该数据同步装置可以部署成集群系统,这样可以比单个物理数据库拥有更新的网络链接,可以开启更多的消息发送线程,异步消息队列中的所有修改数据通过多个消息发送线程发送时,异地数据同步的时间延时甚至可以做到单次网络通信的极限,从而主备存储之间的数据同步不受主存储资源的影响。
其中,该备用存储可以是Oracle备用存储,也可以不同种类存储单元的组合等,如内存和Oracle备用存储的组合。
本申请实施例通过将主存储上的修改数据加入异步消息队列,并通过开启一个或多个消息发送线程发送异步消息队列中的修改数据至备用存储,使得主备存储之间的数据同步不再受主存储资源的限制,该方法通过多个线程发送数据减小了数据同步时主备存储之间的延时。
而且,本申请实施例中主存储的数据更新和数据快照消息的发送是同步处理的,引入的不稳定因素就只有异步消息队列。但是对于本实施例中的数据同步方法,应用系统层面可以通过集群方式快速实现主备存储间的数据同步,数据库层面由于数据快照消息没有业务含义,完全可以随机分库,单个异步消息队列的物理库宕机后自动剔除即可,不影响可用性。在业务吞吐量方面,由于对于业务系统只是增加了数据快照消息发送的同步调用,业务逻辑非常简单,主要是网络消耗,一般情况下只需3毫秒,对业务系统的吞吐量和延时影响极小。因此,该数据同步方法几乎不影响在线业务处理,对整个业务的稳定性、延时、吞吐量等几乎无影响。
在本申请的另一实施例中,如图2所示,该方法还可以进一步包括以下步骤:
步骤201,接收积压数据查询请求。
数据同步装置可以提供查询接口,通过该接口接收业务系统等对异步消息队列中积压数据的查询请求。
步骤202,反馈异步消息队列中未发送的数据。
该数据同步装置查询异步消息队列中未投递的数据,并将该数据或该数据的相关信息反馈至业务系统等查询方。
该步骤201~202可以在前述步骤102后执行,也可以根据需要调整其与步骤101~103之间的步骤顺序,此处不做限定。
本实施例中,如果主存储上的修改数据已经成功提交至业务系统,则该数据快照消息也就已经发送到异步消息队列里面,如果在异步消息队列里面没有积压的数据,则该主存储上的修改数据一定已经成功写入备用存储。
该数据同步装置通过对外提供异步消息队列中积压数据的查询,从而可以区分哪些修改数据没有同步到备用存储中,能准确检测到主存储与备用存储之间的数据差异。而且可以检测出备用存储中与这些修改数据对应的不可靠数据,当主存储宕机时可以快速剔除极少量的异常数据,让备用存储中的正常数据提供正常的更新服务。
在本申请的另一实施例中,如图3所示,该方法还可以进一步包括:
步骤301,接收备用存储反馈的第一修改数据存储成功的信息。
备用存储在接收到第一修改数据,并将第一修改数据成功存入备用存储后,备用存储会向该数据同步装置反馈存储成功的信息。
具体的,备用存储可以在满足预置反馈条件时再触发反馈第一修改数据存储成功的信息。
例如,如果备用存储中包含多个相同且相互独立的存储单元,各存储单元各自进行同步数据的存储。则该反馈条件可以是在备用存储中成功存储第一修改数据的存储单元在备用存储的所有存储单元中所占的比例达到预设比例阈值。该比例阈值可以是50%等。也即当该第一修改数据在备用存储中达到半数存储时,备用存储即可反馈第一修改数据存储成功的信息。
在要求极端严格,备用存储中的数据在常规情况不使用的场景可以配置成所有存储单元写入成功才返反馈存储成功的信息。
步骤302,删除第一修改数据。
数据同步装置在将异步消息队列中的第一修改数据发送给备用存储后,不会马上删除该第一修改数据,可以对该第一修改数据进行标记并存储,以表明该第一修改数据已经发送完成,在接收到第一修改数据存储成功的信息后,再删除该第一修改数据。
在本申请另一实施例中,备用存储可以有两个,包括备用内存存储和第二备用存储,该第二备用存储具体可以是Oracle备用存储。
该数据同步装置在将第一修改数据发送至备用存储时,具体可以是通过消息发送线程,将异步消息队列中的第一修改数据发送至备用内存存储。内存的读写速度很快,通过将修改数据发送至备用内存存储可以实现修改数据的快速写入。但是由于备用内存存储的存储空闲限制,不适合保存大数据量的数据,备用内存存储上会设置有数据过期时间,过期的数据会直接被删除掉。
基于此,为了便于大数据量的数据存储和查询,主存储可以采用同步或异步存储的方式将主存储上的数据完全发送至第二备用存储中进行储存。只要将备用内存存储的数据过期时间设置为远大于主存储将数据同步到第二备用存储的延时即可。这样既可以通过备用内存存储快速写入修改数据,并只需保留最近一段时间内的修改数据,也可以通过第二备用存储读取所有同步数据。其中,在设置备用内存存储的数据过期时间时,需要首先获知主存储与第二备用存储在数据同步时的延时,该延时的获得有多种方式,例如,由于主存储同步数据到第二备用存储是有序的,可以通过在主存储的数据上写入一个时间戳,再到第二备用存储中查询接收到该数据的时间,就可以实时监控主存储同步数据到第二备用存储的时间延时。
针对不同应用场景,本申请中备用存储的使用方式不同。对于只需要查询最近一段时间内有变化的数据,则直接查询备用内存存储即可,如金融系统中风险检测;如果是用于容灾,则需要把异步消息队列中积压数据排查在外,这部分数据暂时不提供服务,然后通过比对备用内存存储和第二备用存储获得最新数据,该最新数据剔除了在备用内存存储中未完全成功存储的部分数据,该最新数据和主存储中的数据一定是一致的,该最新数据可以直接对外提供修改服务。这种使用方式是金融系统的高可用、机房级灾备、异地灾备等场景中的最核心解决方案。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图4,示出了本申请一种数据同步装置实施例的结构框图,具体可以包括如下单元:
数据接收单元401,被配置为接收主存储发送的第一修改数据。
数据处理单元402,被配置为将所述第一修改数据加入异步消息队列。
数据发送单元403,被配置为通过消息发送线程,将所述异步消息队列中的所述第一修改数据发送至备用存储。
本申请实施例通过上述单元将主存储上的修改数据加入异步消息队列,并通过开启一个或多个消息发送线程发送异步消息队列中的修改数据至备用存储,使得主备存储之间的数据同步不再受主存储资源的限制,该装置通过多个线程发送数据减小了数据同步时主备存储之间的延时。
而且,本申请实施例中主存储的数据更新和数据快照消息的发送是同步处理的,引入的不稳定因素就只有异步消息队列。但是对于本实施例中的数据同步装置,应用系统层面可以通过集群方式快速实现主备存储间的数据同步,数据库层面由于数据快照消息没有业务含义,完全可以随机分库,单个异步消息队列的物理库宕机后自动剔除即可,不影响可用性。在业务吞吐量方面,由于对于业务系统只是增加了数据快照消息发送的同步调用,业务逻辑非常简单,主要是网络消耗,一般情况下只需3毫秒,对业务系统的吞吐量和延时影响极小。因此,该数据同步装置几乎不影响在线业务处理,对整个业务的稳定性、延时、吞吐量等几乎无影响。
在本申请的另一实施例中,数据接收单元401,具体被配置为接收主存储发送的所述第一修改数据的数据快照。
在本申请的另一实施例中,如图5所示,该装置还包括:
请求接收单元501,被配置为接收积压数据查询请求。
信息反馈单元502,被配置为反馈所述异步消息队列中未发送的数据。
该数据同步装置通过对外提供异步消息队列中积压数据的查询,从而可以区分哪些修改数据没有同步到备用存储中,从而可以检测出备用存储中与这些修改数据对应的不可靠数据,当主存储宕机时可以快速剔除极少量的异常数据,让备用存储中的正常数据提供正常的更新服务。
在本申请的另一实施例中,如图6所示,该装置还包括:
信息接收单元601,被配置为接收所述备用存储反馈的所述第一修改数据存储成功的信息。
数据删除单元602,被配置为删除所述第一修改数据。
其中,信息接收单元601,具体可以被配置为接收所述备用存储在满足反馈条件时触发反馈的所述第一修改数据存储成功的信息,其中,所述反馈条件为在所述备用存储中成功存储所述第一修改数据的存储单元在所述备用存储的存储单元中所占的比例达到预设比例阈值。
在另一实施例中,数据发送单元403,具体可以被配置为通过消息发送线程,将所述异步消息队列中的所述第一修改数据发送至备用内存存储,其中,所述备用内存存储的数据过期时间大于所述主存储将数据同步到第二备用存储的延时。
本申请实施例还公开了一种电子设备,包括存储器、收发器和处理器。
处理器与收发器和存储器通过总线相互连接;总线可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。
其中,存储器用于存储一段程序,具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
收发器,用于接收主存储上的第一修改数据;通过消息发送线程,将异步消息队列中的所述第一修改数据发送至备用存储。
处理器用于读取存储器中的程序代码,执行以下步骤:
将所述第一修改数据加入异步消息队列。
参照图7,示出了本申请一种数据同步系统实施例的结构框图,具体可以包括主存储701、异步消息队列系统702和备用存储,备用存储包括备用内存存储703和第二备用存储704。
异步消息队列系统702,被配置为接收所述主存储701发送的第一修改数据;将所述第一修改数据加入异步消息队列;通过消息发送线程,将所述异步消息队列中的所述第一修改数据发送至所述备用内存存储703。
第二备用存储704,被配置为接收并存储所述主存储701的同步数据;
其中,备用内存存储703的数据过期时间大于所述主存储701将数据同步到第二备用存储704的延时。
该第二备用存储704具体可以是Oracle备用存储。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据同步方法和一种数据同步装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。