跨机房数据同步方法、装置以及服务器与流程

文档序号:19690205发布日期:2020-01-14 23:07阅读:321来源:国知局
跨机房数据同步方法、装置以及服务器与流程

本申请涉及数据同步领域,更具体地,涉及一种跨机房数据同步方法、装置以及服务器。



背景技术:

出于数据安全备份或提高各地用户的访问速度等目的,一些互联网站会在不同地点部署多个站点。其中,每个站点为一台服务器或者由多台服务器所组成的集群。这些站点之间会保持数据同步,以使得其中所存储的部分数据内容或者全部数据内容一致。但是,在该数据同步中,数据同步的可靠性还有待提升。



技术实现要素:

鉴于上述问题,本申请提出了一种跨机房数据同步方法、装置以及服务器,以提升数据同步过程中的可靠性。

第一方面,本申请提供了一种跨机房数据同步方法,应用于跨机房数据同步系统,所述跨机房数据同步系统包括消息队列装置以及服务器;所述服务器用于将接收到的所订阅的数据封装为数据包并写入到所述消息队列装置中;所述方法包括:当所述服务器向所述消息队列装置执行写入目标数据包操作失败后,检测可再次向所述消息队列装置执行写入操作的时刻;当所述服务器检测可向所述消息队列装置执行写入操作时,获取在所述执行写入所述目标数据包之前存储在所述服务器的所述目标数据包;将所述目标数据包写入到所述消息队列装置。

第二方面,本申请提供了一种跨机房数据同步装置,运行于跨机房数据同步系统的服务器,所述跨机房数据同步系统还包括消息队列装置;所述服务器用于将接收到的所订阅的数据封装为数据包并写入到所述消息队列装置中;所述装置包括:数据存储单元,用于将封装的数据包存储在本地;数据同步检测单元,用于向所述消息队列装置执行写入目标数据包操作失败后,检测可再次向所述消息队列装置执行写入操作的时刻;数据读取单元,用于当检测可向所述消息队列装置执行写入操作时,获取在所述执行写入所述目标数据包之前所述数据存储单元存储在所述服务器的所述目标数据包;数据写入单元,用于将所述目标数据包写入到所述消息队列装置。

第三方面,本申请提供了一种服务器,包括一个或多个处理器以及存储器;一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述的方法。

第四方面,本申请提供了一种具有处理器可执行的程序代码的计算机可读存储介质,所述程序代码使所述处理器执行上述的方法。

本申请提供的一种跨机房数据同步方法、装置以及服务器,当所述服务器向所述消息队列装置执行写入目标数据包操作失败后,检测可再向所述消息队列装置执行写入操作时,获取执行所述写入操作前已经存储在服务器本地的目标数据包,再将所述存储在所述服务器的目标数据包写入到所述消息队列装置。从而通过在向消息队列装置执行写入目标数据包之前,将该目标数据包存储在服务器的方式,实现了在执行写入操作失败后,可以再次向消息队列装置写入之前未写入成功的目标数据包,提升了数据同步过程中的数据可靠性。

本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本申请提出的一种跨机房数据同步系统的环境示意图;

图2示出了本申请提出的一种跨机房数据同步系统的结构框图;

图3示出了本申请提出的一种跨机房数据同步方法的流程图;

图4示出了本申请提出的另一种跨机房数据同步方法的流程图;

图5示出了本申请提出的一种存储数据包的流程图;

图6示出了本申请提出的一种跨机房数据同步装置的结构框图;

图7示出了本申请提出的另一种跨机房数据同步装置的结构框图;

图8示出了本申请的一种服务器的结构框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

通常互联网公司会部署多个分布在不同区域站点,有时为了保证所部署的不同站点之间的数据相同或者站点中的部分数据相同,会在不同的站点之间进行数据同步。例如,为了便于用户在接入到每个站点时都能进行用户登录,不同的站点之间会同步所有用户的用户名和密码等登录信息。

通常一个站点是建设在一个机房之中的,所以当在不同的站点之间进行数据同步时,也可以看作是在不同的机房之间进行数据同步。发明人发现,在数据同步中过程中,数据同步的可靠性还有待提升。

因此,发明人提出了本申请中提升数据同步过程中的可靠性的跨机房数据同步方法、装置以及服务器。

下面先对本申请提供的跨机房数据同步方法、装置所运行于的一种跨机房数据同步系统的环境进行介绍。

如图1所示,图1所示的跨机房数据同步系统100中包括第一机房110以及第二机房120。第一机房110与第二机房120通过网络130进行数据交互。在第一机房110中部署有服务器111以及第一机房110中的消息队列装置112。在第二机房120中部署有数据迁移设备121、消息队列装置122以及服务器123。其中,需要说明的是,如图2所示,消息队列装置112以及消息队列装置122在数据同步过程中均可以包括多个消息队列。

其中,消息队列是一种应用程序对应用程序间传输消息的通道。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。常见消息队列有rabbitmq,rocketmq,kafka等。

请再结合图2所示,在第一机房110中,服务器111中运行有sdk(softwaredevelopmentkit)组件,该sdk组件可以订阅数据生产方所产生的业务数据,将该业务数据写入到第一机房110中的消息队列装置112。在第二机房120中,数据迁移设备121可以将第一机房110中的消息队列装置112的数据迁移到消息队列装置122,而服务器123可以从消息队列装置122中读取数据进行处理。其中,作为一种方式,在服务器123中运行有一个管理节点以及多个处理节点,例如,图2中的maternode为管理节点,receivenode为处理节点。而etcd负责选举管理节点作为处理节点以及协调多个处理节点处理消息队列中的数据。

下面再以从第一机房110同步数据到第二机房120为例说明下同步过程中的数据传输流程。在这种情况下,第一机房110则为业务数据发送方的源机房,第二机房120则为业务数据接收方的目标机房。第一机房110中服务器111运行的sdk组件,将接收到的需同步的业务数据封装为数据包,并且以异步线程的方式将封装的数据包写入到消息队列装置112中的消息队列中。而目标机房的数据迁移设备121预先订阅有消息队列装置112中的数据,当数据迁移设备121检测到消息队列装置112中的消息队列有数据包写入时,则将该消息队列中的数据包迁移到第二机房120的消息队列装置122中的消息队列中。则第二机房120的服务器123再从消息队列装置122中的消息队列中读取待处理的数据包进行处理,以实现将数据包所封装数据写入到本地,从而完成数据从第一机房110到第二机房120的同步。

需要说明的是,消息队列装置112可以由一台物理设备,例如一台服务器来承载,也可以有多台物理设备来承载,例如,多台服务器来承载。对于消息队列装置122也是如此。再者,当数据迁移设备121由一台服务器来实现时,且消息队列装置122也由一个物理设备来承载时,可以将消息队列装置122部署在数据迁移设备121中,即由一台服务器来实现数据迁移设备121和消息队列装置122的功能。

下面将结合附图具体描述本申请的各实施例。

请参阅图3,本申请提供的一种跨机房数据同步方法,应用于跨机房数据同步系统,所述跨机房数据同步系统包括消息队列装置以及服务器;所述服务器用于将接收到的所订阅的数据封装为数据包并写入到所述消息队列装置中;所述方法包括:

步骤s110:当所述服务器向所述消息队列装置执行写入目标数据包操作失败后,检测可再次向所述消息队列装置执行写入操作的时刻。

步骤s120:当所述服务器检测可向所述消息队列装置执行写入操作时,获取在所述执行写入所述目标数据包之前存储在所述服务器的所述目标数据包。

步骤s130:将所述目标数据包写入到所述消息队列装置。

本申请提供的一种跨机房数据同步方法,通过在向消息队列装置执行写入目标数据包之前,将该目标数据包存储在服务器的方式,实现了在执行写入操作失败后,可以再次向消息队列装置写入之前未写入成功的目标数据包,提升了数据同步过程中的数据可靠性。

请参阅图4,本申请提供的一种跨机房数据同步方法,应用于跨机房数据同步系统,所述跨机房数据同步系统包括消息队列装置以及服务器;所述服务器用于将接收到的所订阅的数据封装为数据包并写入到所述消息队列装置中;所述方法包括:

步骤s210:所述服务器存储目标数据包。

当业务数据的生产方在生产业务数据后,可将生产的业务数据发送给服务器。服务器在接收到的业务数据的生产方发送的业务数据后,将该业务数据封装为数据包。并且,为了便于提升在同步过程中,数据包的可靠性,服务器会将封装后的数据包存储在本地。作为一种方式,服务器将时间顺序上最新封装完成的数据包作为目标数据包。例如,服务器先接收到了数据a,再接收到了数据b,之后先执行完对数据a的封装,则将数据a所封装得到的数据包作为目标数据包。

作为一种方式,服务器可以以目标数据包所封装数据对应的存储方式存储目标数据包。其中,目标数据包所封装数据对应的存储方式可以由所封装数据的业务生产方配置。可以理解的是,在这种情况下,服务器在获取到数据时,同时也会获取到该数据对应的存储方式,以便按照对应的存储方式存储封装得到的目标数据包。

作为一种方式,如图5所示,服务器在存储时可以在执行下述步骤:

步骤s211:判断目标数据包所封装数据存储方式。

步骤s212:当获取到所述目标数据包所封装数据对应的存储方式为内存模式时,将所述目标数据包存储到内存队列中。

步骤s213:当获取到所述目标数据包所封装数据对应的存储方式为文件模式时,将所述目标数据包存储到文件队列中。

步骤s214:当获取到所述目标数据包所封装数据对应的存储方式为混合模式时,判断内存是否还有存储空间。

步骤s215:如果有,将所述目标数据包存储到内存队列。

步骤s216:如果没有,将所述目标数据包存储到文件队列。

步骤s220:所述服务器执行将所述目标数据包写入消息队列装置的操作,并判断该操作是否成功。

在源机房中的服务器以及消息队列装置的运行过程中,会因为服务器或者消息队列装置运行故障或者网路故障等造成服务器向消息队列装置写入数据失败。则服务器在执行向消息队列装置写入数据时,会基于消息队列装置返回的一些标识数据判断是否成功写入目标数据包到消息队列装置。

步骤s230:当所述服务器向所述消息队列装置执行写入目标数据包操作失败后,检测可再次向所述消息队列装置执行写入操作的时刻。

其中,当服务器无法向消息队列装置写入目标数据包,或者是在向消息队列装置写入目标数据包的过程中出现数据异常时,服务器均判断为向所述消息队列装置执行写入操作失败。其中,服务器无法向消息队列装置写入目标数据包包括服务器自身无法执行写入动作,例如,服务器中的写入进程被杀掉。再者,也可能是消息队列装置出现了设备故障,造成服务器无法与消息队列装置建立通信连接。

需要说明的是,服务器在开始运行时,会向业务数据生产方订阅业务数据。在服务器无法向消息队列装置写入数据的这段时间,服务器依然可以接收到业务数据生产方所发送的业务数据,即服务器依然会接收到新的预先订阅的数据,则作为一种提升数据可靠性的方式,在这种情况下,服务器接收到新的预先订阅的数据时,将所述新的预先订阅的数据封装为数据包存储到内存队列中,以便后续服务器可以将消息队列装置写入数据时,将出现无法写入的这段时间内存储的数据包也写入到消息队列装置中。

步骤s240:当所述服务器检测可向所述消息队列装置执行写入操作时,获取在所述执行写入目标数据包之前存储在所述服务器的所述目标数据包。

其中,服务器检测到前一次造成写入失败的故障被消除时,则判断可向所述消息队列装置执行写入操作。例如,在服务器执行前述步骤判断服务器中执行写入操作的写入进程被杀掉造成服务器向所述消息队列装置执行写入操作失败后,服务器开始检测写入进程的恢复时刻,当检测到写入进程恢复启动时,则判断可向所述消息队列装置执行写入操作。再例如,因检测到消息队列装置出现故障,而造成服务器无法与消息队列装置建立通信连接,造成服务器向所述消息队列装置执行写入操作失败后,服务器间隔预设时间尝试与消息队列装置建立通信连接,当通信建立成功时,则判断可向所述消息队列装置执行写入操作。

需要说明的是,服务器在执行将数据包a写入消息队列之前,已经将数据包a存储在服务器本地。则服务器再次尝试向消息队列装置写入数据时,可以直接从本地获取数据包a,从而实现了业务生成方所生成的业务数据被服务器接收后,即可有较高的可靠度被发送到目标机房,提升了数据同步的可靠性。

作为一种方式,当所述服务器向所述消息队列装置执行写入操作失败后之后,服务器还可检测目标数据包是否有存储在磁盘中文件队列中,如果有,则将所述磁盘中的文件队列中存储的目标数据包迁移到内存队列中。通常文件队列运行在磁盘中,而内存队列运行于内存中,则内存队列相比文件队列而言具有更高的处理速度。

当服务器在存储数据包时,有的数据包会存到文件队列中,而有的数据包会存在内存队列中。则当服务器将所述磁盘中的文件队列中存储的目标数据包迁移到内存队列中后,可以在检测到可向所述消息队列装置执行写入操作时,直接从内存队列中获取目标数据包,从而以较快的速度,将目标数据包写入到消息队列装置中。

可以理解的是,服务器在获取存储在所述服务器的目标数据包时,获取的除了之前发送的目标数据包外,还会获取在向所述消息队列装置执行写入操作失败后到检测可向所述消息队列装置执行写入操作时之间,存储在服务器的数据包。例如,当服务器在执行写入目标数据包a时失败,则在检测到可再次向所述消息队列装置执行写入操作时之前,接收并存储了新的数据包b,则当检测可向所述消息队列装置执行写入操作时,获取存储在所述服务器的目标数据包时,则会同时获取目标数据包a和数据包b。

步骤s250:将所述目标数据包写入到所述消息队列装置。

本申请提供的一种跨机房数据同步方法,当所述服务器向所述消息队列装置执行写入操作失败后,检测可向所述消息队列装置执行写入操作时,获取执行所述写入操作失败前存储的目标数据包,再将所述存储在所述服务器的目标数据包写入到所述消息队列装置。从而通过在向消息队列装置执行写入目标数据包之前,将该目标数据包存储在服务器的方式,实现了在执行写入操作失败后,可以再次向消息队列装置写入之前未写入成功的目标数据包,提升了数据同步过程中的数据可靠性。

请参阅图6,本申请提供的一种跨机房数据同步装置300,运行于跨机房数据同步系统的服务器,所述跨机房数据同步系统还包括消息队列装置;所述服务器用于将接收到的所订阅的数据封装为数据包并写入到所述消息队列装置中;所述装置300包括:数据存储单元310、数据同步检测单元320、数据读取单元330以及数据写入单元340。

其中,数据存储单元310,用于将封装的数据包存储在本地;

数据同步检测单元320,用于向所述消息队列装置执行写入目标数据包操作失败后,检测可再次向所述消息队列装置执行写入操作的时刻。

数据读取单元330,用于当检测可向所述消息队列装置执行写入操作时,获取在所述执行写入所述目标数据包之前所述数据存储单元310存储在所述服务器的所述目标数据包。

数据写入单元340,用于将所述目标数据包写入到所述消息队列装置。

请参阅图7,本申请提供的一种跨机房数据同步装置400,运行于跨机房数据同步系统的服务器,所述跨机房数据同步系统还包括消息队列装置;所述服务器用于将接收到的所订阅的数据封装为数据包并写入到所述消息队列装置中。所述装置400包括:数据存储单元410、数据写入单元440、数据同步检测单元420以及数据读取单元430。

其中,数据存储单元410,用于存储目标数据包。

数据写入单元440,用于执行将所述目标数据包写入消息队列装置的操作,并判断该操作是否成功。

数据同步检测单元420,用于数据写入单元440向所述消息队列装置执行写入操作失败后,检测可再次向所述消息队列装置执行写入操作的时刻。

数据读取单元430,用于当检测可向所述消息队列装置执行写入操作时,获取在所述执行写入所述目标数据包之前所述数据存储单元410存储在所述服务器的所述目标数据包。

数据写入单元440,用于将所述存储在所述服务器的目标数据包写入到所述消息队列装置。

综上所述,本申请提供的一种跨机房数据同步方法、装置以及服务器,当所述服务器向所述消息队列装置执行写入操作失败后,检测可向所述消息队列装置执行写入操作时,获取执行所述写入操作失败前存储的目标数据包,再将所述存储在所述服务器的目标数据包写入到所述消息队列装置。从而通过在向消息队列装置执行写入目标数据包之前,将该目标数据包存储在服务器的方式,实现了在执行写入操作失败后,可以再次向消息队列装置写入之前未写入成功的目标数据包,提升了数据同步过程中的数据可靠性。

请参阅图8,基于上述的数据同步控制方法、装置,本申请还提供一种服务器140,该服务器140可以作为图1中所示的系统的服务器111或者服务器123,也可以为承载消息队列装置122或者消息队列装置112的物理设备,还以用来作为本申请中的数据迁移设备。

需要说明的是,当消息队列装置112或者消息队列装置122均设立在一个设备上时,消息队列装置112运行在一个服务器140中,消息队列装置122也是运行在一个服务器140中。而当消息队列装置112或者消息队列装置122是分布在多个物理设备时,则消息队列装置112是分布在多个服务器140中,消息队列装置122也是分布在多个服务器140中。

该服务器140包括一个或多个(图中仅示出一个)处理器222、存储器224、网络模块228以及外设接口230。

本领域普通技术人员可以理解,相对于所述处理器222来说,所有其他的组件均属于外设,所述处理器222与这些外设之间通过多个外设接口230相耦合。所述外设接口230可基于以下标准实现:通用异步接收/发送装置(universalasynchronousreceiver/transmitter,uart)、通用输入/输出(generalpurposeinputoutput,gpio)、串行外设接口(serialperipheralinterface,spi)、内部集成电路(inter-integratedcircuit,i2c),但不并限于上述标准。在一些实例中,所述外设接口230可仅包括总线。此外,这些控制器还可以从所述外设接口230中脱离出来,而集成于所述处理器222内或者相应的外设内。

所述存储器224可用于存储软件程序以及模块,所述处理器222通过运行存储在所述存储器224内的软件程序以及模块,从而执行各种功能应用以及数据处理。所述存储器224可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,所述存储器224可进一步包括相对于所述处理器222远程设置的存储器。此外,存储器224还可以存储一些待处理的数据。例如,当消息队列装置112或者消息队列装置122是由服务器140来承载时,存储器224可以存储消息队列中的数据。

所述网络模块228用于接收以及发送网络数据,以实现和其他设备之间通过网络进行数据交互。

外设接口230用于服务器140与外部设备通过有线的方式进行通信。该外设接口可以是usb接口或者rs232接口等。

上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(服务器),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。例如,该程序在执行时,执行的内容为前述内容中步骤s110到步骤s130的内容。此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

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