数据同步方法、装置、服务器及计算机存储介质与流程

文档序号:17726858发布日期:2019-05-22 02:34阅读:196来源:国知局
数据同步方法、装置、服务器及计算机存储介质与流程
本发明涉及通信
技术领域
,具体涉及一种数据同步方法、装置、服务器及计算机存储介质。
背景技术
:后台系统开发中,常常需要把数据服务器中高频使用的数据加载到应用的内存以加快处理速度,而且现在的后台应用往往是分布式的后台。因此,容易造成数据服务器和后台应用的内存中的数据不一致。因此,如何完成数据服务器与后台应用之间的数据同步成为一个亟待解决的技术问题。技术实现要素:本发明实施例公开了一种数据同步方法、装置、服务器及计算机存储介质,能够完成数据服务器与后台服务器之间的数据同步。第一方面,本发明实施例公开了一种数据同步方法,该方法可以应用于同步服务器,该方法可以包括:通过增量更新数据接口接收数据服务器发送的更新消息,更新消息包括数据服务器的标识、更新数据和更新版本号,更新版本号是更新数据的版本号;确定与数据服务器的标识具有对应关系的各个后台服务器的标识;基于各个后台服务器的标识,将更新数据和更新版本号推送给各个后台服务器,以使各个后台服务器根据更新数据和更新版本号进行增量更新。在一种实现方式中,所述方法还可以包括:接收后台服务器发送的第一数据请求,第一数据请求用于请求版本号与更新版本号相同的目标完整数据,第一数据请求是该后台服务器在自身的内存储器中不存在完整数据时发送的;获取目标完整数据,目标完整数据是同步服务器根据前述更新数据,对同步服务器的外存储器中存储的完整数据进行增量更新得到的;将目标完整数据发送给该后台服务器。在一种实现方式中,所述方法还可以包括:接收后台服务器发送的第二数据请求,第二数据请求用于请求版本号与版本号集合中的版本号相同的更新数据,版本号集合包括1个或多个版本号,第二数据请求是该后台服务器在自身的内存储器中存在完整数据,且前述更新版本号与内存储器中的完整数据的版本号之间的差值大于预设值时发送的;获取更新数据集合,更新数据集合中的更新数据的版本号与版本号集合中的版本号一一对应相同;将更新数据集合发送给该后台服务器,以使该后台服务器按照版本号递增的顺序,依次根据接收到的更新数据对上一次增量更新后的完整数据进行增量更新。第二方面,本发明实施例公开了另一种数据同步方法,该方法可以应用于后台服务器,该方法可以包括:接收同步服务器发送的推送数据,推送数据包括更新数据和更新版本号,更新版本号是更新数据的版本号,后台服务器与同步服务器之间的连接状态为长连接;检测内存储器中是否存在完整数据;若内存储器中存在完整数据,则获取完整数据的版本号;若更新版本号与完整数据的版本号不同,则根据更新数据对完整数据进行增量更新;将增量更新后的完整数据和更新版本号关联存储于内存储器。在一种实现方式中,所述方法还可以包括:若内存储器中不存在完整数据,则向同步服务器发送第一数据请求,第一数据请求用于请求版本号与更新版本号相同的目标完整数据;接收同步服务器发送的目标完整数据;将目标完整数据和更新版本号关联存储于内存储器。在一种实现方式中,若更新版本号与完整数据的版本号不同,则根据更新数据对完整数据进行增量更新的具体实施方式可以为:若更新版本号与完整数据的版本号之间的差值为预设值,则根据更新数据对完整数据进行增量更新;若更新版本号与完整数据的版本号之间的差值大于预设值,则向同步服务器发送第二数据请求,第二数据请求用于请求版本号与版本号集合中的版本号相同的更新数据,版本号集合包括1个或多个版本号;接收同步服务器发送的更新数据集合,更新数据集合中的更新数据的版本号与版本号集合中的版本号一一对应相同;按照版本号递增的顺序,依次根据接收到的更新数据,对上一次增量更新后的完整数据进行增量更新。在一种实现方式中,所述方法还可以包括:以预设时长为间隔,检测后台服务器与同步服务器之间的连接状态,连接状态包括长连接和断开;若连接状态为断开,则向同步服务器发送长连接请求,长连接请求用于请求与同步服务器建立长连接;接收同步服务器发送的连接成功消息,该连接成功消息用于指示后台服务器与同步服务器之间成功建立长连接。第三方面,本发明实施例公开了一种数据同步装置,该装置包括用于执行上述第一方面所述的方法的单元。第四方面,本发明实施例公开了另一种数据同步装置,该装置包括用于执行上述第二方面所述的方法的单元。第五方面,本发明实施例公开了一种服务器,该服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面所述的方法。第六方面,本发明实施例公开了另一种服务器,该服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第二方面所述的方法。第七方面,本发明实施例公开了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面所述的方法。第八方面,本发明实施例公开了另一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第二方面所述的方法。通过实施本发明实施例,同步服务器在接收到数据服务器发送的更新数据和更新版本号之后,可以确定与数据服务器的标识具有对应关系的各个后台服务器的标识,并基于各个后台服务器的标识,将更新数据和更新版本号推送给各个后台服务器,以使各个后台服务器根据更新数据和更新版本号进行增量更新,从而完成数据服务器与各个后台服务器之间的数据同步。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种通信系统的架构示意图;图2是本发明实施例提供的一种数据同步方法的流程示意图;图3是本发明实施例提供的另一种数据同步方法的流程示意图;图4是本发明实施例提供的又一种数据同步方法的流程示意图;图5是本发明实施例提供的一种数据同步装置的结构示意图;图6是本发明实施例提供的另一种数据同步装置的结构示意图;图7是本发明实施例提供的一种同步服务器的结构示意图;图8是本发明实施例提供的一种后台服务器的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。请参见图1,图1是本发明实施例公开的一种通信系统的架构示意图。如图1所示,该通信系统包括数据服务器101、同步服务器102、第一后台服务器103、第二后台服务器104和第三后台服务器105。其中,数据服务器101可以用于存储第一后台服务器103、第二后台服务器104和第三后台服务器105需要的数据。同步服务器102具有发布订阅功能,数据服务器101可以通过将存储的数据发送给同步服务器102,以便同步服务器102通过发布功能将该数据推送至第一后台服务器103、第二后台服务器104和第三后台服务器105,以便完成数据服务器101与第一后台服务器103、第二后台服务器104和第三后台服务器105之间的数据同步。其中,同步服务器102可以为redis服务器或者其他具有发布订阅功能的服务器,本发明实施例对此不作限定,应用于本发明实施例中,以同步服务器102为redis服务器为例进行说明。需要说明的是,图1中同步服务器102将该数据推送至3个后台服务器仅用于举例,并不构成对本发明实施例的限定,在具体实现中,同步服务器102还可以将该数据推送至1个、2个、5个或者其他数量的后台服务器,本发明实施例对此不作限定。可以理解的是,本发明实施例描述的通信系统是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。基于图1所示的通信系统的架构示意图,请参阅图2,图2是本发明实施例提供的一种数据同步方法的流程示意图。具体的,如图2所示,本发明实施例的数据同步方法可以包括但不限于如下步骤:s201、redis服务器通过增量更新数据接口接收数据服务器发送的更新消息,该更新消息包括数据服务器的标识、更新数据和更新版本号,更新版本号是更新数据的版本号。其中,数据服务器的标识用于唯一标识该数据服务器,更新消息可以是数据服务器检测到自身存储的完整数据发生更新时,向redis服务器发送的,需要说明的是,该完整数据可以为数据服务器中存储的所有数据或者部分数据,但是该完整数据是后台服务器需要的数据,只要后台服务器需要的数据发生更新,数据服务器就可以向redis服务器发送更新消息。更新数据用于指示在完整数据的基础上发生更新的数据,redis服务器在接收到数据服务器发送的更新数据之后,可以根据更新数据对当前存储的完整数据进行增量更新,并得到新的完整数据。增量更新是指在进行更新操作时,只更新需要改变的地方,不需要更新未发生改变的地方,且已经更新过的地方则不会重复更新,相对于全量更新,增量更新消耗的处理资源更少。全量更新是指对所有数据进行更新。需要说明的是,更新数据和完整数据是不同类型的数据。在一种实现方式中,数据服务器可以向redis服务器发送自身存储的完整数据,以便后续向redis服务器发送更新数据时,redis服务器可以根据更新数据,对redis服务器当前存储的完整数据进行增量更新。可以理解的是,数据服务器后续向redis服务器发送其他更新数据时,不用再次向redis服务器发送自身存储的完整数据,redis服务器仅需根据当前接收到的更新数据,对上一次增量更新得到的完整数据进行增量更新即可。在一种实现方式中,数据服务器可以关联存储更新数据和更新数据的版本号(即更新版本号)。在一种实现方式中,数据服务器还可以关联存储自身存储的完整数据和自身存储的完整数据的版本号。完整数据的版本号和更新数据的版本号均可以为递增的版本号,版本号可以用于指示完整数据发生更新的顺序。例如,当版本号为以1递增的版本号,且完整数据1的版本号为v1,完整数据2的版本号为v2时,表明完整数据2是在完整数据1的基础上,根据版本号为v2的更新数据进行增量更新后得到的。其中,数据服务器发送给redis服务器的更新数据可以用于指示目标完整数据在第一完整数据的基础上变化的数据。第一完整数据可以是数据服务器在上一次数据更新之前,自身存储的完整数据。例如,在8:00:00(时:分:秒)时,数据服务器中存储的完整数据为第一完整数据,若3分钟后(即8:03:00时),数据服务器中存储的第一完整数据发生了更新,更新完成后,数据服务器中存储的完整数据为目标完整数据,数据服务器可以通过比较目标完整数据和第一完整数据,得到需要发送给redis服务器的更新数据。需要说明的是,在任何情况下,数据服务器中仅存储一份完整数据。在一种实现方式中,数据服务器中可以存储多份更新数据,且多份更新数据的版本号不同,在数据服务器存储的所有更新数据的版本号中,最大版本号与数据服务器中存储的完整数据的版本号相同。需要说明的是,上述版本号为以1递增的版本号仅用于举例,在其他可行的实现方式中,版本号还可以为以2、3或者其他数字递增的版本号,本发明实施例对此不做限定。在本发明实施例中,redis服务器接收到数据服务器发送的更新消息时,表明数据服务器中存储的数据发生了更新,redis服务器通过将更新消息中的更新数据和更新版本号推送给需要数据服务器中存储的数据的各个后台服务器,可以保持数据服务器和需要数据服务器中存储的数据的各个后台服务器之间的数据同步。在一种实现方式中,redis服务器的增量更新数据接口可以仅用于接收更新消息,也可以用于接收其他数据,本发明实施例对此不作限定。在一种实现方式中,数据服务器可以包括1个或多个数据库,其中,每个数据库可以用于存储不同应用相关的数据。也就是说,不同后台服务器需要的数据可以存储于数据服务器的不同数据库中,例如,若数据服务器包括2个数据库(a和b),其中,后台服务器1、后台服务器2和后台服务器3均需要数据库a中的数据,后台服务器4、后台服务器5和后台服务器6均需要数据库b中的数据,当数据库a中存储的数据发生更新时,数据服务器a可以向同步服务器发送更新消息a,该更新消息a用于指示数据库a中的数据发生了更新,相应的,redis服务器可以将该更新消息a中的更新数据和更新版本号发送给后台服务器1、后台服务器2和后台服务器3。同理,当数据库b中存储的数据发生更新时,数据服务器b可以向redis服务器发送更新消息b,该更新消息b用于指示数据库b中的数据发生了更新,相应的,redis服务器可以将该更新消息b中的更新数据和更新版本号发送给后台服务器4、后台服务器5和后台服务器6。在一种实现方式中,数据服务器中的数据库可以为oracle、mysql、redis、hbase或者其他常用数据库,本发明实施例对此不做限定。s202、redis服务器确定与数据服务器的标识具有对应关系的各个后台服务器的标识。具体的,redis服务器接收到更新消息之后,可以通过查询对应关系表,确定与数据服务器的标识具有对应关系的所有后台服务器的标识,并将更新消息包括的更新数据和更新版本号发送给每个后台服务器的标识对应的后台服务器。redis服务器可以将该数据服务器的标识与各个后台服务的标识之间的对应关系预先存储于对应关系表中,该对应关系可以是由数据服务器发送给redis服务器的。在一种实现方式中,redis服务器可以接收不同数据服务器发送的更新消息,且不同数据服务器的标识对应的后台服务器的标识可以不同,例如,redis服务器可以接收数据服务器1发送的更新消息1,并接收数据服务器2发送的更新消息2,并且与数据服务器1的标识具有对应关系的后台服务器标识可以为后台服务器标识1和后台服务器标识2,与数据服务器2的标识具有对应关系的后台服务器标识可以为后台服务器标识3和后台服务器标识4。在一种实现方式中,redis服务器确定与数据服务器的标识具有对应关系的各个后台服务器的标识的具体实施方式还可以为:redis服务器在所使用的所有信道中确定目标信道,并获取预存的订阅该目标信道的各个后台服务器的标识,其中,目标信道用于数据服务器与各个后台服务器之间的数据传输。redis服务器可以使用1个或多个信道,每个信道可以用于发布不同数据服务器的数据,或者,每个信道也可以用于发布同一数据服务器中的不同数据。因此,redis服务器在接收到数据服务器发送的更新消息时,需要确定用于发布该更新消息的信道。具体的,当redis服务器针对该数据服务器仅创建了一个信道时,redis服务器中可以预先存储有服务器标识与信道标识之间的对应关系。当redis服务器接收到数据服务器发送的更新消息时,该更新消息包括该数据服务器的标识,redis服务器可以获取该数据服务器的标识,并根据服务器标识与信道标识之间的对应关系,在redis服务器使用的所有信道中,将与该数据服务器的标识对应的信道标识所指示的信道确定为目标信道,目标信道用于发布更新数据和更新版本号。在一种实现方式中,更新消息还可以包括信道标识,当redis服务器针对该数据服务器创建了多个信道时,数据服务器可以预先存储数据库标识和信道标识之间的对应关系,其中,不同数据库标识对应不同的信道标识。当某数据库中存储的数据发生更新时,数据服务器可以确定该数据库对应的信道标识,进而,在数据服务器将更新数据和更新版本号发送给redis服务器时,将前述数据库对应的信道标识一并发送给redis服务器。以便redis服务器可以根据前述数据库对应的信道标识,在redis服务器使用的所有信道中确定目标信道,并将更新数据和更新版本号发送给订阅了该目标信道的各个后台服务器。在一种实现方式中,redis服务器可以使用1个或多个信道,不同后台服务器可以订阅相同或者不同的信道,也就是说,每个信道可以被1个或多个后台服务器订阅。redis服务器中可以预先存储订阅了各个信道的所有后台服务器的标识,例如,当redis服务器使用3个信道(信道1、信道2和信道3)时,订阅redis服务器的各个信道的后台服务器的标识可以如表1所示。表1订阅redis服务器的各个信道的后台服务器的标识信道标识订阅各个信道的所有后台服务器的标识信道1后台服务器1、后台服务器2、后台服务器3信道2后台服务器4、后台服务器5信道3后台服务器6s203、redis服务器基于前述各个后台服务器的标识,将前述更新数据和更新版本号推送给各个后台服务器,以使各个后台服务器根据前述更新数据和更新版本号进行增量更新。具体的,redis服务器确定与数据服务器的标识具有对应关系的各个后台服务器的标识之后,可以将前述更新数据和更新版本号推送给各个后台服务器的标识对应的后台服务器。相应的,各个后台服务器接收到前述更新数据和更新版本号之后,可以比较更新版本号和自身存储的完整数据的版本号,并根据比较结果判断是否对自身存储的完整数据进行增量更新。由于版本号为递增的版本号,若比较结果为更新版本号和自身存储的完整数据的版本号不同,则表明数据服务器中存储的数据发生了更新,后台服务器需要根据前述更新数据对自身存储的完整数据进行增量更新。具体的,当版本号以预设值递增时,若比较结果为更新版本号和自身存储的完整数据的版本号之间的差值为预设值,则表明数据服务器中存储的数据发生了更新,后台服务器中存储的完整数据与数据服务器当前存储的完整数据不同,且后台服务器中存储的完整数据与数据服务器上一次更新之前存储的完整数据相同,根据版本号为更新版本号的更新数据对自身存储的完整数据进行增量更新,在增量更新完成之后可以使得后台服务器中存储的完整数据与数据服务器当前存储的完整数据一致。需要说明的是,预设值可以是1、2、3或者其他数值,本发明实施例对此不作限定。在本发明实施例中,由于采用的是递增的版本号,使得后台服务器在根据更新数据更新自身存储的完整数据之前,可以判断更新版本号和自身存储的完整数据的版本号是否一致,且仅在不一致时,后台服务器才对自身存储的完整数据进行增量更新。通过这种方式,可以避免更新版本号和后台服务器自身存储的完整数据的版本号一致时,后台服务器根据更新数据对自身存储的完整数据进行不必要的更新,而导致资源浪费。通过实施本发明实施例,redis服务器在接收到数据服务器发送的更新数据和更新版本号之后,确定与数据服务器的标识具有对应关系的各个后台服务器的标识,并基于各个后台服务器的标识,将更新数据和更新版本号推送给各个后台服务器,以使各个后台服务器根据更新数据和更新版本号进行增量更新,从而完成数据服务器与各个后台服务器之间的数据同步。请参阅图3,图3是本发明实施例提供的另一种数据同步方法的流程示意图。具体的,如图3所示,本发明实施例的另一种数据同步方法可以包括但不限于以下步骤:s301、redis服务器通过增量更新数据接口接收数据服务器发送的更新消息,该更新消息包括数据服务器的标识、更新数据和更新版本号,更新版本号是更新数据的版本号。s302、redis服务器确定与数据服务器的标识具有对应关系的各个后台服务器的标识。s303、redis服务器基于前述各个后台服务器的标识,将前述更新数据和更新版本号推送给各个后台服务器。需要说明的是,步骤s301~s303的执行过程可以分别参见图2中步骤s201~s203中的具体描述,在此不赘述。图3以与数据服务器的标识具有对应关系的后台服务器的标识数量为1为例,因此图3中仅示出redis服务器将更新数据和更新版本号推送给1个后台服务器。需要说明的是,与数据服务器的标识具有对应关系的后台服务器的标识数量为1仅用于举例,在其他可行的实现方式中,与数据服务器的标识具有对应关系的后台服务器的标识数量还可以为2、3或者其他数量,且一个后台服务器的标识唯一标识一个后台服务器,本发明实施例对此不作限定。s304、后台服务器检测内存储器中是否存在完整数据。当后台服务器接收到redis服务器发送的推送数据时,首先需要判断是否能够执行增量更新,即后台服务器需要检测内存储器中是否存在完整数据,进而才能在完整数据的基础上,根据推送数据包括的更新数据进行增量更新。其中,推送数据包括更新数据和更新版本号,且更新版本号是更新数据的版本号,后台服务器是在与redis服务器之间的连接状态为长连接时,接收到redis服务器发送的推送数据的。在一种实现方式中,后台服务器还可以预设时长为间隔,检测后台服务器与redis服务器之间的连接状态,连接状态包括长连接和断开;若连接状态为断开,则向redis服务器发送长连接请求,该长连接请求用于请求与redis服务器建立长连接;接收redis服务器发送的连接成功消息,连接成功消息用于指示后台服务器与redis服务器之间成功建立长连接。具体的,后台服务器以预设时长为间隔,检测与redis服务器之间的长连接是否断开,若断开,则通过向redis服务器发送长连接请求,以便重新建立长连接;若未断开,则继续保持长连接。通过这种方式,可以确保后台服务器和redis服务器之间的通信连接处于长连接状态,进而确保后台服务器可以成功接收到redis服务器发送的推送数据。其中,长连接是指在一个连接上可以连续发送多个数据包,短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。相较于在后台服务器与redis服务器之间建立短连接,通过在后台服务器与redis服务器之间建立长连接,可以避免redis服务器每向后台服务器发送一次推送数据,均需要重新建立一次短连接,有利于降低后台服务器和redis服务器的功耗。其中,预设时长可以为5分钟、6分钟或者其他数值,本发明实施例对此不作限定。在一种实现方式中,后台服务器向redis服务器发送长连接请求之后,若接收到redis服务器发送的连接失败消息,则后台服务器可以继续向后台服务器发送长连接请求,直至接收到redis服务器发送的连接成功消息。在一种实现方式中,后台服务器向redis服务器发送长连接请求之后,若并未接收到redis服务器针对长连接请求作出的任何响应,则表明redis服务器可能并未成功接收到长连接请求,此时,后台服务器可以继续向后台服务器发送长连接请求,直至接收到redis服务器发送的连接成功消息。s305、若内存储器中存在完整数据,则后台服务器获取该完整数据的版本号。具体的,后台服务器的内存储器中存在完整数据时,后台服务器还需要进一步判断是否需要进行增量更新,以避免在不需要进行增量更新的情况下,执行增量更新而导致资源浪费。具体的,后台服务器可以通过比较更新版本号和自身内存储器中存储的完整数据的版本号,并根据比较结果,判断是否需要进行增量更新。s306、若更新版本号与该完整数据的版本号不同,则后台服务器根据更新数据对该完整数据进行增量更新。由于版本号为递增的版本号,若更新版本号和后台服务器存储的完整数据的版本号不同,则表明数据服务器中存储的数据发生了更新,后台服务器需要根据更新数据对自身存储的完整数据进行增量更新。在一种实现方式中,当版本号以预设值递增时,更新版本号和后台服务器存储的完整数据的版本号不同的原因可能有两种:第一,数据服务器中存储的数据发生了更新,此时,更新版本号与后台服务器存储的完整数据的版本号之间的差值为预设值;第二,数据服务器中存储的数据发生了更新,并且,后台服务器未成功接收redis服务器之前推送的推送数据,此时,更新版本号与后台服务器存储的完整数据的版本号之间的差值大于预设值。在一种实现方式中,后台服务器可以确定更新版本号与后台服务器存储的完整数据的版本号之间的差值,并根据该差值确定增量更新的执行次数。在一种实现方式中,当版本号以预设值递增时,若更新版本号与后台服务器存储的完整数据的版本号之间的差值为预设值,表明数据服务器中存储的数据发生了更新,后台服务器中存储的完整数据与数据服务器当前存储的完整数据不同,且后台服务器中存储的完整数据与数据服务器上一次更新之前存储的完整数据相同,此时,后台服务器仅需根据更新数据对该完整数据进行1次增量更新,即可使得更新后得到的完整数据与数据服务器当前存储的完整数据一致。在一种实现方式中,当版本号以预设值递增时,若更新版本号与后台服务器存储的完整数据的版本号之间的差值大于预设值,则表明后台服务器并未成功接收到redis服务器发送的所有更新数据,或者,表明后台服务器成功接收到redis服务器发送的所有更新数据,但是在执行增量更新时并未更新成功。此时,后台服务器可以执行如下步骤:s1、后台服务器向redis服务器发送第二数据请求,第二数据请求用于请求版本号与版本号集合中的版本号相同的更新数据,版本号集合包括1个或多个版本号。后台服务器向redis服务器发送第二数据请求,以便获取版本号与版本号集合中的版本号相同的更新数据,通过这种方式,可以使得后台服务器成功接收到之前并未接收到的所有更新数据。进而根据获得的更新数据,进行多次增量更新,使得增量更新完成后得到的完整数据与数据服务器中存储的完整数据一致。在一种实现方式中,版本号集合可以包括更新版本号与后台服务器存储的完整数据的版本号之间的版本号。例如,当更新版本号为v5,且后台服务器存储的完整数据的版本号为v1时,版本号集合包括的所有版本号为:v2、v3和v4。s2、后台服务器接收redis服务器发送的更新数据集合,更新数据集合中的更新数据的版本号与版本号集合中的版本号一一对应相同。具体的,redis服务器接收到后台服务器发送的第二数据请求之后,可以获取版本号与版本号集合中的各个版本号相同的更新数据,得到更新数据集合,并将更新数据集合发送给该后台服务器。更新数据集合中的更新数据的版本号与版本号集合中的版本号一一对应相同,例如,若版本号集合包括的所有版本号为:v2、v3和v4,且更新数据集合包括的所有更新数据为:第二更新数据、第三更新数据和第四更新数据时,其中,第二更新数据的版本号与v2相同,第三更新数据的版本号与v3相同,第四更新数据的版本号与v4相同。s3、后台服务器按照版本号递增的顺序,依次根据接收到的更新数据,对上一次增量更新后的完整数据进行增量更新。具体的,更新数据集合可以包括版本号为更新版本号的更新数据,也可以不包括版本号为更新版本号的更新数据。当更新数据集合包括版本号为更新版本号的更新数据时,后台服务器根据接收到的更新数据,对上一次增量更新后的完整数据进行增量更新的具体实施方式可以为:后台服务器根据更新数据集合中的更新数据,对上一次增量更新后的完整数据进行增量更新。当更新数据集合不包括版本号为更新版本号的更新数据时,后台服务器根据接收到的更新数据,对上一次增量更新后的完整数据进行增量更新的具体实施方式可以为:后台服务器根据更新数据集合中的更新数据和版本号为更新版本号的更新数据,对上一次增量更新后的完整数据进行增量更新。相较于更新数据集合包括版本号为更新版本号的更新数据,当更新数据集合不包括版本号为更新版本号的更新数据时,可以使得redis服务器向后台服务器发送更新数据集合时,发送的数据量较少,有利于提高传输效率。例如,若版本号集合包括的所有版本号为:v2、v3和v4,更新数据集合包括的所有更新数据为:第二更新数据、第三更新数据和第四更新数据,且v2与第二更新数据的版本号相同,v3与第三更新数据的版本号相同,v4和第四更新数据的版本号相同,更新版本号为v5,后台服务器当前存储的完整数据的版本号为v1时,后台服务器可以首先根据第二更新数据,对后台服务器上一次增量更新得到的完整数据(即后台服务器当前存储的完整数据)进行增量更新,得到完整数据2;然后,根据第三更新数据,对后台服务器上一次增量更新得到的完整数据(即完整数据2)进行增量更新,得到完整数据3;再次,根据第四更新数据,对后台服务器上一次增量更新得到的完整数据(即完整数据3)进行增量更新,得到完整数据4;最后,根据redis服务器推送的更新数据,对后台服务器上一次增量更新得到的完整数据(即完整数据4)进行增量更新,得到完整数据5。进而将完整数据5和v5关联存储于内存储器,以便后续接收到新的更新数据时,后台服务器可以将v5和新的更新数据的版本号进行比较,并根据比较结果判断是否根据新的更新数据,对完整数据5进行增量更新。其中,完整数据5的版本号为v5。在一种实现方式中,由于更新数据的版本号可以指示完整数据发生更新的时间顺序,因此,后台服务器按照版本号递增的顺序,依次根据接收到的更新数据,对上一次增量更新后的完整数据进行增量更新,可以成功执行增量更新。若不按照版本号递增的顺序执行增量更新,可能导致更新失败。例如,若版本号为v2的更新数据2描述的是版本号为v2的完整数据2在版本号为v1的完整数据1的基础上变化的数据,若版本号为v3的更新数据3描述的是版本号为v3的完整数据3在版本号为v2的完整数据2的基础上变化的数据,若后台服务器当前存储的完整数据为完整数据1,且后台服务器接收到的更新数据为更新数据2和更新数据3,此时,若后台服务器按照版本号递减的顺序执行增量更新,即根据更新数据3,对完整数据1进行增量更新,将可能更新失败。s307、后台服务器将增量更新后的完整数据和更新版本号关联存储于内存储器。后台服务器将增量更新后的完整数据和更新版本号关联存储于自身的内存储器,以便后续接收到新的更新数据时,可以将更新版本号和新的更新数据的版本号进行比较,并进行比较结果判断是否进行增量更新。通过实施本发明实施例,redis服务器在接收到数据服务器发送的更新数据和更新版本号之后,可以确定与数据服务器的标识具有对应关系的后台服务器的标识,并基于后台服务器的标识,将更新数据和更新版本号推送给后台服务器,后台服务器在更新版本号和自身存储的完整数据的版本号不一致时,根据更新数据对自身存储的完整数据进行增量更新。通过这种方式,可以避免更新版本号和后台服务器自身存储的完整数据的版本号一致时,后台服务器根据更新数据对自身存储的完整数据进行不必要的更新而导致资源浪费。在一种实现方式中,若更新版本号与后台服务器存储的完整数据的版本号之间的差值大于预设值且小于或等于预设阈值,则第一后台服务器可以执行步骤s306中的s1、s2和s3。其中,预设阈值大于或等于2倍预设值。当更新版本号与后台服务器存储的完整数据的版本号之间的差值大于预设值且小于或等于预设阈值时,表明后台服务器未成功接收redis服务器之前推送的推送数据的次数较少,相较于向redis服务器请求获取目标完整数据,由于目标完整数据包括的数据远远大于更新数据包括的数据,通过向redis服务器发送第二数据请求,获取的是1份或多份更新数据,可以减少网络中传输的数据量,提高传输效率。并且,相较于写入目标完整数据,执行较少次数的增量更新操作的功耗更小。在一种实现方式中,若更新版本号与后台服务器存储的完整数据的版本号之间的差值大于预设阈值,则后台服务器可以执行如下步骤:向redis服务器发送第一数据请求,以便获取目标完整数据,并将目标完整数据和更新版本号关联存储于自身的内存储器,其中,第一数据请求用于请求版本号与更新版本号相同的目标完整数据。更新版本号与后台服务器存储的完整数据的版本号之间的差值大于预设阈值,表明后台服务器未成功接收redis服务器之前推送的推送数据的次数较多,相较于向redis服务器发送第二数据请求,以便获取更新数据集合,由于后台服务器未成功接收redis服务器之前推送的推送数据的次数较多,导致更新数据集合中包括的更新数据的数量越多,使得后台服务器需要执行增量更新操作的次数越多,可以理解的是,进行多次增量更新的方式出错的概率较高。然而,若向redis服务器发送第一数据请求,获取的是目标完整数据,仅需进行1次数据写入操作即可,相较于进行多次增量更新的方式,采用此方式可以更加准确地得到目标完整数据。请参阅图4,图4是本发明实施例提供的又一种数据同步方法的流程示意图。具体的,如图4所示,本发明实施例的又一种数据同步方法可以包括但不限于以下步骤:s401、redis服务器通过增量更新数据接口接收数据服务器发送的更新消息,该更新消息包括数据服务器的标识、更新数据和更新版本号,更新版本号是更新数据的版本号。s402、redis服务器确定与数据服务器的标识具有对应关系的各个后台服务器的标识。s403、redis服务器基于前述各个后台服务器的标识,将前述更新数据和更新版本号推送给各个后台服务器。图4以与数据服务器的标识具有对应关系的后台服务器的标识数量为1为例,因此图4中仅示出redis服务器将更新数据和更新版本号推送给1个后台服务器。s404、后台服务器检测内存储器中是否存在完整数据。需要说明的是,步骤s401~s404的执行过程可以分别参见图2中步骤s201~s203和图3中步骤s304中的具体描述,在此不赘述。具体的,后台服务器检测内存储器中是否存在完整数据,若存在完整数据,则执行步骤s405;若不存在完整数据,则执行步骤s406。s405、若内存储器中存在完整数据,则后台服务器获取该完整数据的版本号;若更新版本号与该完整数据的版本号不同,则后台服务器根据更新数据对该完整数据进行增量更新;后台服务器将增量更新后的完整数据和更新版本号关联存储于内存储器。需要说明的是,步骤s405的执行过程可以参见图3中步骤s305~s307中的具体描述,在此不赘述。s406、若内存储器中不存在完整数据,则后台服务器向redis服务器发送第一数据请求,所述第一数据请求用于请求版本号与更新版本号相同的目标完整数据。具体的,由于增量更新需要在存在完整数据的基础上,根据更新数据对完整数据进行增量更新。因此,后台服务器中不存在完整数据时,表明后台服务器的内存储器中的数据丢失,后台服务器无法进行增量更新。此时,后台服务器可以向redis服务器发送第一数据请求,以便获取目标完整数据。需要说明的是,由于目标完整数据的版本号与更新版本号相同,因此,后台服务器获取的目标完整数据与数据服务器当前存储的完整数据相同,即后台服务器获取目标完整数据之后,不用执行增量更新,仅需将目标完整数据与更新版本号关联存储于内存储器即可。在一种实现方式中,后台服务器的内存储器中的数据丢失的原因可以是因后台服务器断电,而导致内存储器中的数据全部丢失,后台服务器通过将完整数据存储于内存储器,可以使得读取完整数据的速度更快。由于redis服务器将完整数据和更新数据存储于外存储器,且外存储器中存储的数据不会因断电而丢失,因此redis服务器中存储的完整数据和更新数据不易丢失。所以后台服务器通过向redis服务器发送第一数据请求,可以获取目标完整数据。在一种实现方式中,外存储器可以为硬盘、软盘、光盘或者u盘等,本发明实施例对此不作限定。在一种实现方式中,redis服务器通过存储版本号与完整数据之间的对应关系,可以使得后台服务器中的完整数据发生丢失时,redis服务器可以向后台服务器发送后台服务器需要的完整数据(即目标完整数据),有利于确保后台服务器与数据服务器之间的数据同步。s407、redis服务器获取目标完整数据,目标完整数据是redis服务器根据更新数据,对redis服务器的外存储器中存储的完整数据进行增量更新得到的。在一种实现方式中,redis服务器在接收到数据服务器发送的完整数据之后,可以将该完整数据存储在自身的外存储器中,当redis服务器在接收到数据服务器发送的更新数据之后,可以根据该更新数据,对外存储器中的完整数据进行增量更新,更新完成后得到目标完整数据。其中,更新版本号大于该外存储器中的完整数据的版本号,当版本号以1递增时,更新版本号与该外存储器中的完整数据的版本号之间的差值为1。因此,redis服务器根据该更新数据,对外存储器中的完整数据进行1次增量更新,可以使得更新完成后得到的目标完整数据与数据服务器中存储的完整数据一致。在一种实现方式中,redis服务器中可以预先存储版本号与完整数据之间的对应关系,当redis服务器接收到后台服务器发送的第一数据请求之后,可以基于版本号与完整数据之间的对应关系,获取版本号与与更新版本号相同的目标完整数据,进而将目标完整数据发送给后台服务器。s408、redis服务器将目标完整数据发送给后台服务器。s409、后台服务器将目标完整数据和更新版本号关联存储于内存储器。具体的,后台服务器接收到redis服务器发送的目标完整数据之后,可以将目标完整数据和更新版本号关联存储于自身的内存储器,以便后续接收到新的更新数据时,可以将更新版本号和新的更新数据的版本号进行比较,并进行比较结果判断是否进行增量更新。通过实施本发明实施例,redis服务器在接收到数据服务器发送的更新数据和更新版本号之后,可以确定与数据服务器的标识具有对应关系的后台服务器的标识,并基于后台服务器的标识,将更新数据和更新版本号推送给后台服务器,后台服务器可以内存储器中存在完整数据,且更新版本号和自身存储的完整数据的版本号不一致时,根据更新数据对自身存储的完整数据进行增量更新。通过这种方式,可以避免更新版本号和后台服务器自身存储的完整数据的版本号一致时,后台服务器根据更新数据对自身存储的完整数据进行不必要的更新而导致资源浪费。另外,后台服务器可以在内存储器中不存在完整数据时,通过向redis服务器发送第一数据请求,以便获取目标完整数据。通过这种方式,可以避免因后台服务器的内存储器中发生数据丢失,而导致后台服务器无法进行增量更新的问题,有利于提高同步系统的可靠性。请参见图5,图5是本发明实施例提供的一种数据同步装置的结构示意图,具体的,如图5所示,该数据同步装置50,可以包括:接收单元501,用于通过增量更新数据接口接收数据服务器发送的更新消息,该更新消息包括数据服务器的标识、更新数据和更新版本号,更新版本号是更新数据的版本号。处理单元502,用于确定与数据服务器的标识具有对应关系的各个后台服务器的标识。发送单元503,用于基于各个后台服务器的标识,将更新数据和更新版本号推送给各个后台服务器,以使各个后台服务器根据前述更新数据和更新版本号进行增量更新。在一种实现方式中,接收单元501,还可以用于接收后台服务器发送的第一数据请求,第一数据请求用于请求版本号与更新版本号相同的目标完整数据,第一数据请求是后台服务器在自身的内存储器中不存在完整数据时发送的;该数据同步装置50还可以包括获取单元504,用于获取目标完整数据,所述目标完整数据是所述同步服务器根据所述更新数据,对所述同步服务器的外存储器中存储的完整数据进行增量更新得到的;发送单元503,还可以用于将目标完整数据发送给后台服务器。在一种实现方式中,接收单元501,还可以用于接收后台服务器发送的第二数据请求,第二数据请求用于请求版本号与版本号集合中的版本号相同的更新数据,版本号集合包括1个或多个版本号,第二数据请求是后台服务器在自身的内存储器中存在完整数据,且更新版本号与内存储器中的完整数据的版本号之间的差值大于预设值时发送的;获取单元504,还可以用于获取更新数据集合,更新数据集合中的更新数据的版本号与版本号集合中的版本号一一对应相同;发送单元503,还可以用于将更新数据集合发送给后台服务器,以使后台服务器按照版本号递增的顺序,依次根据接收到的更新数据对上一次增量更新后的完整数据进行增量更新。本发明实施例和图2-图4所示方法实施例基于同一构思,其带来的技术效果也相同,具体原理请参照图2-图4所示实施例的描述,在此不赘述。请参见图6,图6是本发明实施例提供的另一种数据同步装置的结构示意图,具体的,如图6所示,该数据同步装置60,可以包括:接收单元601,用于接收同步服务器发送的推送数据,推送数据包括更新数据和更新版本号,更新版本号是该更新数据的版本号,后台服务器与同步服务器之间的连接状态为长连接;检测单元602,用于检测内存储器中是否存在完整数据;获取单元603,用于若内存储器中存在完整数据,则获取该完整数据的版本号;处理单元604,用于若更新版本号与完整数据的版本号不同,则根据更新数据对完整数据进行增量更新;处理单元604,还可以用于将增量更新后的完整数据和更新版本号关联存储于内存储器。在一种实现方式中,该同步装置60还可以包括发送单元605,用于若内存储器中不存在完整数据,则向同步服务器发送第一数据请求,第一数据请求包括更新版本号,第一数据请求用于请求版本号与更新版本号相同的目标完整数据;接收单元601,还可以用于接收同步服务器发送的目标完整数据;处理单元604,还可以用于将目标完整数据和更新版本号关联存储于内存储器。在一种实现方式中,处理单元604,用于若更新版本号与完整数据的版本号不同,则根据更新数据对完整数据进行增量更新时,具体用于若更新版本号与完整数据的版本号之间的差值为预设值,则根据更新数据对完整数据进行增量更新;若更新版本号与完整数据的版本号之间的差值大于预设值,则向同步服务器发送第二数据请求,第二数据请求用于请求版本号与版本号集合中的版本号相同的更新数据,版本号集合包括1个或多个版本号;接收同步服务器发送的更新数据集合,更新数据集合中的更新数据的版本号与版本号集合中的版本号一一对应相同;按照版本号递增的顺序,依次根据接收到的更新数据,对上一次增量更新后的完整数据进行增量更新。在一种实现方式中,检测单元602,还可以用于以预设时长为间隔,检测后台服务器与同步服务器之间的连接状态,连接状态包括长连接和断开;发送单元605,还可以用于若连接状态为断开,则向同步服务器发送长连接请求,长连接请求用于请求与同步服务器建立长连接;接收单元601,还可以用于接收同步服务器发送的连接成功消息,该连接成功消息用于指示后台服务器与同步服务器之间成功建立长连接。本发明实施例和图3-图4所示方法实施例基于同一构思,其带来的技术效果也相同,具体原理请参照图3-图4所示实施例的描述,在此不赘述。请参阅图7,图7是本发明实施例提供的一种同步服务器的结构示意图。该服务器70可以包括接收器701、发送器702、存储器703和处理器704,接收器701、发送器702、存储器703和处理器704通过一条或多条通信总线连接。存储器703可以包括只读存储器和随机存取存储器,并向处理器704提供指令和数据。存储器703的一部分还可以包括非易失性随机存取存储器。处理器704可以是中央处理单元(centralprocessingunit,cpu),该处理器704还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器,可选的,该处理器704也可以是任何常规的处理器等。其中:存储器703,用于存储程序指令。处理器704,用于调用存储器703中存储的程序指令,以用于:通过增量更新数据接口接收数据服务器发送的更新消息,该更新消息包括数据服务器的标识、更新数据和更新版本号,更新版本号是更新数据的版本号。确定与数据服务器的标识具有对应关系的各个后台服务器的标识。基于各个后台服务器的标识,将更新数据和更新版本号推送给各个后台服务器,以使各个后台服务器根据前述更新数据和更新版本号进行增量更新。需要说明的是,图7对应的实施例中未提及的内容以及各个步骤的具体实现方式可参见图1-图4所示实施例以及前述内容,这里不再赘述。请参阅图8,图8是本发明实施例提供的一种后台服务器的结构示意图。该服务器80可以包括接收器801、存储器802和处理器803,接收器801、存储器802和处理器803通过一条或多条通信总线连接。存储器802可以包括只读存储器和随机存取存储器,并向处理器803提供指令和数据。存储器802的一部分还可以包括非易失性随机存取存储器。处理器803可以是中央处理单元(centralprocessingunit,cpu),该处理器803还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器,可选的,该处理器803也可以是任何常规的处理器等。其中:存储器802,用于存储程序指令。处理器803,用于调用存储器802中存储的程序指令,以用于:接收同步服务器发送的推送数据,推送数据包括更新数据和更新版本号,更新版本号是该更新数据的版本号,后台服务器与同步服务器之间的连接状态为长连接;检测内存储器中是否存在完整数据;若内存储器中存在完整数据,则获取该完整数据的版本号;若更新版本号与完整数据的版本号不同,则根据更新数据对完整数据进行增量更新;将增量更新后的完整数据和更新版本号关联存储于内存储器。需要说明的是,图8对应的实施例中未提及的内容以及各个步骤的具体实现方式可参见图3-图4所示实施例以及前述内容,这里不再赘述。本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令被处理器执行时,使处理器执行如图1-图4所示方法实施例中redis服务器所执行的步骤。本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令被处理器执行时,使处理器执行如图3-图4所示方法实施例中后台服务器所执行的步骤。以上所揭露的仅为本发明的部分实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1