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

文档序号:11156864阅读:630来源:国知局
跨数据中心数据同步系统及方法与制造工艺

本发明涉及计算机及互联网技术领域,特别是涉及一种跨数据中心数据同步系统及方法。



背景技术:

随着互联网时代的到来,社交网络、微博、位置服务等面向普通互联网用户的交互网站正蓬勃兴起,各种网站向数以亿计的用户提供基于互联网和无线网络的交互服务。遍布全世界的互联网用户每天都进行多种多样的交互,随时都在制造各种个样的数据,这些数据的数量是单机时代数据量的数倍。

为了可靠地保存这些数据,互联网公司会将服务器分布在多个城市的不同数据中心,同时将数据在不同的数据中心进行备份,因此,需要在不同的数据中心之间进行数据同步。而对于大量与时间序列相关的数据,在进行跨数据中心同步时,需要根据数据的生成时间有序地进行同步,乱序的数据将破坏原有数据的准确性。并且,由于异构数据存储系统的大量存在,数据同步系统需要很好地支持多语言。

现有的数据同步方案主要包括专有数据同步和应用层数据同步两种方式。

在专用数据同步方式中,设置有支持跨数据中心数据同步的数据库,例如Mysql、Hbase等,依赖这类特定的数据库来实现不同数据中心的数据同步。这种方案会限制用户的数据只能存储在特定的数据存储系统中,用户无法灵活地选取合适的数据存储系统,并且,数据无法在异构数据源之间进行同步。

在应用层数据同步方式中,需要进行应用层双写和应用层链式多写,通过应用层实现将数据写到多个数据中心。在双写和链式多写下,只有将数据同时在多个数据中心写成功才能被确认为写成功。但是在网络抖动较大的情况下,双写和链式多写都会严重影响应用层的性能,并且在异常情况下无法保证数据的有序性。



技术实现要素:

为了提高数据同步的灵活性和可靠性,本发明实施例提供一种跨数据中心数据同步系统及方法。

根据本发明实施例的一个方面,提供一种跨数据中心数据同步系统,用于将源数据中心的数据同步到目的数据中心,所述源数据中心和所述目的数据中心均设置有多个RPC客户端和多个RPC服务器,在所述目的数据中心中设置有数据搬运装置,所述系统还包括数据搬运管理装置;所述数据搬运管理装置,用于管理源消息队列和目的消息队列,以及,控制启动或关闭所述数据搬运装置从源消息队列获取数据;所述数据搬运装置,用于从源消息队列获取到数据,并将所获取的数据存入到目的消息队列中。

优选的,所述数据搬运管理装置,还用于设定所述源消息队列和所述目的消息队列的映射对应关系;所述数据搬运装置将所获取的数据存入到源消息队列对应的目的消息队列中。

优选的,在所述源数据中心的RPC服务器中设置所述源消息队列,在所述目的数据中心的RPC服务器中设置所述目的消息队列。

优选的,所述源消息队列和所述目的消息队列均是基于日志存储的分布式队列。

优选的,所述数据搬运装置包括消息生产端和消息消费端,所述消息消费端用于从源消息队列获取数据,所述消息生产端用于将所述消息消费端获取的数据存入到目的消息队列中。

优选的,所述RPC客户端和RPC服务端之间通过IDL定义通信协议,通过IDL文件编译成语言代码,从而实现在数据中心支持所述语言的数据通信。

根据本发明实施例的另一个方面,提供一种跨数据中心数据同步方法,用于将源数据中心的数据同步到目的数据中心,所述源数据中心和所述目的数据中心均设置有多个RPC客户端和多个RPC服务器,所述方法包括:管理所述源数据中心的源消息队列以及所述目的数据中心的目的消息队列,以及,控制启动或关闭所述目的数据中心的数据搬运装置从源消息队列获取数据;所述数据搬运装置从所述源消息队列获取数据,并将所获取的数据存入到所述目的消息队列中。

优选的,上述方法还包括:设定所述源消息队列和目的消息队列的映射对应关系;所述数据搬运装置将所获取的数据存入到源消息队列对应的目的消息队列中。

优选的,所述源消息队列设置在所述源数据中心的RPC服务器中,所述目的消息队列设置在所述目的数据中心的RPC服务器中。

优选的,所述源消息队列和所述目的消息队列均是基于日志存储的分布式队列。

优选的,所述数据搬运装置包括消息生产端和消息消费端,所述消息消费端用于从源消息队列获取数据,所述消息生产端用于将所述消息消费端获取的数据存入到目的消息队列中。

优选的,上述方法还包括:采用IDL定义所述RPC客户端和RPC服务端之间的通信协议,通过IDL文件编译成语言代码,实现在数据中心支持所述语言的数据通信。

可见,本发明实施例提供的跨数据中心数据同步系统,通过引入通用的RPC协议,从而实现异构数据源下对多语言的支持,从而增强数据同步的灵活性,而且,通过引入基于日志存储的分布式消息队列系统来实现时间序列化(按照不同时间点收集数据)相关数据的有序同步。

附图说明

图1是本发明一个实施例提供的一种跨数据中心数据同步系统结构示意图;

图2是本发明一个实施例提供的跨数据中心数据同步系统的逻辑处理示意图;

图3是本发明一个实施例提供的一种跨数据中心数据同步方法流程图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

鉴于现有的跨数据中心数据同步方案所存在的缺陷,本发明实施例提出一种高可靠、更加灵活的跨数据中心数据同步系统,采用RPC技术实现对多语言的支持,采用消息队列方式实现数据同步的有序性和可靠性。

参见图1,为本发明实施例提供的跨数据中心数据同步系统结构示意图。

系统包括源数据中心1、目的数据中心2以及数据搬运管理装置3,进一步,源数据中心1包括多个RPC客户端101和多个RPC服务器102,并且,在RPC服务器102设置有源消息队列1021。类似的,目的数据中心2包括RPC客户端201和多个RPC服务器202,并且,在RPC服务器202设置有目的消息队列2021,特别的,目的数据中心2还包括数据搬运装置203,该数据搬运装置203可进一步包括数据消费端2031和数据生产端2032;其中,数据搬运管理装置3是数据同步过程的控制端,通过控制源消息队列1021、目的消息队列2021以及数据搬运装置203,来实现数据同步的启动和执行;数据搬运装置203是完成数据同步的主体,完成数据同步的过程。

从逻辑功能上划分,可以将整个系统划分为三个组成部分(子系统):

第一部分是RPC子系统,RPC子系统包括RPC客户端和RPC服务器。RPC子系统实现了对多语言的支持,这是因为,可以将RPC客户端和RPC服务端之间的通信协议通过IDL来定义。由此,对于新的语言,通过相应语言的编译器,就可以将IDL文件编译为该语言的代码,从而实现对该语言的支持。其中,IDL(Interface description language)是一种接口描述语言,它通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流;比如,第一个组件用C++写成,第二个组件用Java写成,可以通过IDL协议接口使第一个组件和第二个组件相互通信。

第二部分是消息队列子系统,消息队列子系统包括源消息队列1021和目的消息队列2021。优选方式中,采用基于分布式消息队列系统的消息队列,由此,通过消息队列子系统可实现数据可靠有序的存储,这是因为,分布式消息队列系统通过日志文件来进行数据的持久存储,而日志文件的特点就是可靠和有序。

第三部分是数据搬运子系统,数据搬运子系统包括数据搬运装置203和数据搬运管理装置3,其中,数据搬运装置203实现数据在不同数据中心之间的同步功能,具体的,数据搬运装置203由消息队列的消息消费端2031和消息生产端2032组成。消息消费端2031负责从源数据中心1消费消息,消息生产端2032负责将消息生产到目的数据中心2,从而实现了跨数据中心的数据同步。与数据搬运装置203协同工作的数据搬运管理装置3可支持数据搬运的在线伸缩,并保证伸缩过程中数据不丢失。所谓数据搬运的在线伸缩,可以理解为,无需停止服务,就可以对服务实例进行关闭下线或者上线,并保证数据不丢失。在服务下线前,通过数据搬运装置203关闭当前设备的读写权限,数据流被分流到别的设备,此时关闭当前设备就不会造成数据丢失。

下面对系统的各个主要构成进行详细介绍。

所谓的数据中心是一整套复杂的系统,它不仅仅包括计算机系统和其它与之配套的设备(例如通信和存储系统),还包含冗余的数据通信连接、环境控制设备、监控设备以及各种安全装置。数据中心可以被理解为“多功能的系统,能容纳多个服务器以及通信设备”。源数据中心1和目的数据中心2可以是现有的常规数据中心,也可以是未来发展出的数据中心。

如前文所述,RPC子系统由RPC客户端和RPC服务器两部分组成,数据中心的外部系统内嵌RPC客户端来实现与数据同步系统的通信。

RPC(Remote Procedure Call Protocol),即远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC采用客户端/服务器模式。请求程序就是一个客户端,而服务提供程序就是一个服务器。RPC的工作过程是:首先,客户端调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

本发明实施例中,数据经由RPC服务器到达源消息队列,经由数据搬运装置最终提供给目的消息队列。如前所述的,采用RPC子系统的好处在于,通过内嵌不同语言实现的RPC客户端,可以实现对多语言的支持。优选的,可将消息队列与RPC服务器部署在同一个设备上(参照图1,源消息队列1021部署在RPC服务器102、目的消息队列2021部署在RPC服务器202),由此可以降低网络开销。当然,可以理解,也可以将源消息队列1021部署在非RPC服务器102的设备上。

优选方式中,源消息队列1021和目的消息队列2021都采用基于日志存储的分布式队列系统,实现在源数据中心1和目的数据中心2进行实际数据的存储。日志型的存储系统可以满足数据存储的有序性和可靠性,分布式的消息队列集群可以根据实际的数据量对集群进行动态的扩容和缩容。分布式消息队列系统通过日志文件来进行数据的持久化,而日志文件的特点就是可靠和有序,日志型存储系统中的数据一条一条按照顺序添加到文件中,并被持久存储到硬盘,因此可以满足有序性和可靠性。

数据搬运装置203主要完成实际数据的搬运功能,优选方式中,由消息消费端2031组成和消息生产端2032。数据搬运装置203可以理解为是一个分布式消息系统。

分布式消息系统,是一种同时在不同的计算机上提供消息的临时存储和消息的分发功能的系统。典型的分布式消息系统包括消息生产端集群、代理集群和消息消费端集群,消息生产端(Producer)构造出不同主题的消息,发往局域网中部署有消息系统服务的代理端(也称为:Broker)上进行临时存储,消息消费端(Customer)根据自身订阅的主题从该消息系统集群中获得对应的消息进行后续加工。分布式消息系统的特点在于消息服务分布在多台计算机上,通过容错机制达到高可用,通过负载均衡策略支撑高吞吐。

本发明实施例中,消息消费端2031负责从源数据中心1消费数据,同时调用消息生产端2032将获取到的消息发送到目的数据中心2中去。为了避免在搬运数据的过程中破坏数据的有序性,优选的,要求源数据中心1中同一个队列的消息全部搬运到同一个目的数据中心的队列中。并在数据搬运管理装置3上控制源数据队列1021与目的数据队列2021之间的映射关系。

通过数据搬运装置203,可保证源数据中心1与目的数据中心2之间的数据同步只发生一次,降低网络专线的开销。这是因为,是通过数据搬运装置203将源数据中心1的数据搬运到目的数据中心2,假设如果不搬运,如果目的数据中心2有多个设备都需要消费源数据中心1的数据,对于相同的数据,各个设备需要分别消费一次,那就是多次占用网络专线的开销,而通过数据搬运装置203搬运之后,对于目的数据中心2的设备,只需要从本地数据中心消费即可,无需占用网络专线资源。

数据搬运管理装置3,可以是一台独立的设备,用于实现对数据搬运装置203的管理,并且需要控制源数据队列1021与目的数据队列2021的映射关系,从而保证数据的有序性。数据搬运管理装置3管理数据搬运装置203在动态伸缩(所谓动态伸缩是指部署的服务器或其他设备在数量上的变化)时的开启与关闭,从而保证数据不会丢失。数据搬运管理装置3在启动数据搬运装置203时,会加载源消息队列1021与目的消息队列2021的对应关系,后续的数据同步过程都会根据这个对应关系来进行。

参加图2,为本发明实施例提供的跨数据中心数据同步系统的逻辑处理示意图。

跨数据中心数据同步系统的逻辑处理过程如下:

(1)启动部署在源数据中心、目的数据中心的源消息队列和目的消息队列;并且,通过数据搬运管理装置启动数据搬运模块,等待源数据中心中产生数据,并指定源消息队列与目的消息队列的对应关系;

(2)源数据中心的数据写入到源数据中心的源消息队列中;

(3)数据搬运模块的消息消费端从源数据中心的源消息队列中获取到数据,并通过消息生产端将数据存储到目的数据中心中的目的消息队列中;目的数据中心的客户端从目的数据中心的目的消息队列中获取到同步过来的数据。

本发明实施例提供的跨数据中心数据同步系统,通过引入通用的RPC协议,从而实现异构数据源下对多语言的支持,从而增强数据同步的灵活性,而且,通过引入基于日志存储的分布式消息队列系统来实现时间序列化相关数据的有序同步。

参见图3,为本发明实施例提供的一种跨数据中心数据同步方法流程图,用于将源数据中心的数据同步到目的数据中心,所述源数据中心和所述目的数据中心均设置有多个RPC客户端和多个RPC服务器,所述方法包括如下步骤。

S301:管理源数据中心的源消息队列以及目的数据中心的目的消息队列,以及,控制启动或关闭目的数据中心的数据搬运装置从源消息队列获取数据。

S302:数据搬运装置从源消息队列获取数据,并将所获取的数据存入到目的消息队列中。

对于上述方法中涉及的源数据中心、目的数据中心可参考图1所示的跨数据中心数据同步系统进行理解。

系统包括源数据中心1、目的数据中心2以及数据搬运管理装置3,进一步,源数据中心1包括多个RPC客户端101和多个RPC服务器102,并且,在RPC服务器102设置有源消息队列1021,类似的,目的数据中心2包括RPC客户端201和多个RPC服务器202,并且,在RPC服务器202设置有目的消息队列2021,特别的,目的数据中心2还包括数据搬运装置203,该数据搬运装置203可进一步包括数据消费端2031和数据生产端2032;其中,数据搬运管理装置3是数据同步过程的控制端,通过控制源消息队列1021、目的消息队列2021以及数据搬运装置203,来实现数据同步的启动和执行;数据搬运装置203是完成数据同步的主体,完成数据同步的过程。

从逻辑功能上划分,可以将整个系统划分为三个组成部分(子系统):

第一部分是RPC子系统,RPC子系统包括RPC客户端和RPC服务器。RPC子系统实现了对多语言的支持,这是因为,可以将RPC客户端和RPC服务端之间的通信协议通过IDL来定义,由此,对于新的语言,通过相应语言的编译器,就可以将IDL文件编译为该语言的代码,从而实现对该语言的支持。其中,IDL(Interface description language)是一种接口描述语言,它通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流;比如,一个组件用C++写成,另一个组件用Java写成。

第二部分是消息队列子系统,消息队列子系统包括源消息队列1021和目的消息队列2021。优选方式中,采用基于分布式消息队列系统的消息队列,由此,通过消息队列子系统可实现数据可靠有序的存储,这是因为,分布式消息队列系统通过日志文件来进行数据的持久化,而日志文件的特点就是可靠和有序。

第三部分是数据搬运子系统,数据搬运子系统包括数据搬运装置203和数据搬运管理装置3,其中,数据搬运装置203实现数据在不同数据中心之间的同步功能,具体的,数据搬运装置203由消息队列的消息消费端2031和消息生产端2032组成。消息消费端2031负责从源数据中心1消费消息,消息生产端2032负责将消息生产到目的数据中心2,从而实现了跨数据中心的数据同步。与数据搬运装置203协同工作的数据搬运管理装置3可支持数据搬运的在线伸缩,并保证伸缩过程中数据不丢失。所谓数据搬运的在线伸缩,可以理解为,无需停止服务,就可以对服务实例进行关闭下线或者上线,并保证数据不丢失。在服务下线前,通过数据搬运装置203关闭当前设备的读写权限,数据流被分流到别的设备,此时关闭当前设备就不会造成数据丢失。

优选的,该方法还包括:设定所述源消息队列和目的消息队列的映射对应关系;其中,所述数据搬运装置将所获取的数据存入到源消息队列对应的目的消息队列中。

优选的,所述源消息队列设置在所述源数据中心的RPC服务器中,所述目的消息队列设置在所述目的数据中心的RPC服务器中。

优选的,所述源消息队列和所述目的消息队列均是基于日志存储的分布式队列。

优选的,所述数据搬运装置包括消息生产端和消息消费端,所述消息消费端用于从源消息队列获取数据,所述消息生产端用于将所述消息消费端获取的数据存入到目的消息队列中。

优选的,所述方法还包括:采用IDL定义所述RPC客户端和RPC服务端之间的通信协议,通过IDL文件编译成语言代码,实现在数据中心支持所述语言的数据通信。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种跨数据中心数据同步方法及系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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