缓存数据同步方法、设备、服务中心及多中心服务系统
技术领域
本发明涉及网络技术领域,更具体地,涉及一种缓存数据同步方法、设备、服务中心及多中心服务系统。
背景技术
随着互联网的普及,在大批用户涌入互联网的同时,也带来了数据量几何级的飞速增长,对于互联网的网络架构带来挑战和机遇。基于多中心架构的网络服务系统,通过多个数据同步的服务中心支撑网络数据传输,可以有效地应对用户量爆发和大数据量的冲击。
目前,基于多中心的网络服务系统,也就是多中心服务系统中通常包括多个服务中心,每个服务中心均至少包括应用服务层、存储层、缓存层,其中,缓存层由于其存储读取数据效率比存储层更高,通常在数据更新时,通过缓存层分担存储层对于更新数据的传输压力,通过缓存层以提高数据传输效率。具体应用中,通常将一个服务中心设置在一个地域机房中,对应支撑一个地域范围内的网络业务服务。
任意两个服务中心之间的数据同步包括两个服务中心的存储层的数据同步以及缓存层同步,通常如图1所示。
在图1中,以A地机房的第一服务中心和B地机房的第二服务中心示例,当第一服务中心发生数据更新时,数据同步机制包括:
Step1,第一服务中心的应用服务层触发存储层更新数据;
Step2,第一服务中心的应用服务层触发缓存层从存储层获取更新信息来更新数据;
Step3,第一服务中心的存储层将更新数据同步至第二服务中心的存储层;
Step4,第一服务中心的应用服务层通知第二服务中心的应用服务层进行缓存层的数据同步;
Step5,第二服务中心的应用服务层从存储层获取更新信息;
Step6,第二服务中心的应用服务层触发缓存层根据更新信息同步更新数据。
可见,存储层之间的数据同步必须发生在缓存层的数据同步之前,但是,在实际应用中,由于网络环境不稳定或者应用服务层的时序控制误差,会出现第二服务中心的缓存层被通知进行缓存层的数据同步,第二服务中心的存储层还未完成数据同步,导致第二服务中心的缓存层根据应用服务层获取的更新信息更新数据后,依然和第一服务中心的缓存层的数据不一致,使得提供的网络服务出现异常。
因此,发明人认为,有必要对上述现有技术中存在的问题进行改进。
发明内容
本发明的一个目的是提供一种用于缓存数据同步方法的新技术方案。
根据本发明的第一方面,提供了一种缓存数据同步方法,实施于多中心服务系统,所述多中心服务系统包括多个服务中心,每个所述服务中心至少包括应用服务层、存储层以及缓存层,所述方法包括:
当第一服务中心存在待更新的数据时,通过所述第一服务中心的应用服务层分别触发所述第一服务中心的存储层、缓存层更新对应的数据,并生成包含对应的数据更新信息的缓存日志表以存储于所述存储层;
通过所述第一服务中心的存储层将更新的数据以及所述缓存日志表,同步至第二服务中心的存储层,以供所述第二服务中心的应用服务层根据所述缓存日志表来实现缓存数据同步。
可选的,所述方法还包括:
通过所述第一服务中心的应用服务层,检测到所述存储层存储有所述缓存日志表时,读取所述缓存日志表获取对应的所述数据更新信息,通知所述第二服务中心的应用服务层以触发缓存数据同步;
通过所述第二服务中心的应用服务层接收所述数据更新信息,检测到所述第二服务中心的存储层存储有与所述数据更新信息对应的所述缓存日志表时,从所述存储层获取与所述缓存日志表对应的更新数据,触发所述第二服务中心的缓存层对应更新数据,以实现缓存数据同步。
可选的,所述方法还包括:
通过第一服务中心的应用服务层,以预设的第一周期检测所述第一服务中心是否存储有所述缓存日志表。
可选的,所述方法还包括:
通过所述第二服务中心的应用服务层,以预设的第二周期检测所述第二服务中心的存储层,是否存储有从其他所述服务中心的存储层同步的所述缓存日志表;
当所述第二服务中心的应用服务层检测到所述第二服务中心的存储层有所述同步的缓存日志表时,从所述存储层获取与所述缓存日志表对应的更新数据,触发所述第二服务中心的缓存层对应更新数据,以实现缓存数据同步。
可选的,所述方法还包括:
当所述第二服务中心完成缓存数据同步后,通过所述第二服务中心的应用服务层,触发所述第二服务中心的存储层删除对应的所述缓存日志表,并生成对应的数据同步信息的缓存同步完成指示,以通知所述第一服务中心的存储层;
通过所述第一服务中心的存储层接收缓存同步完成指示,确认缓存数据同步后,删除与所述缓存同步完成指示对应的所述缓存日志表。
可选的,所述方法还包括:
所述缓存日志表中还存储有唯一对应的缓存日志表标识;
和/或
所述第一服务中心和所述第二服务中心的存储层是MySQL数据库。
根据本发明的第二方面,提供了一种缓存数据同步设备,应用于多中心服务系统,所述多中心服务系统包括多个服务中心,每个所述服务中心至少包括应用服务层、存储层以及缓存层,所述缓存数据同步设备设置于任意一个服务中心侧,包括:
本地更新单元,用于当该服务中心存在待更新的数据时,通过该服务中心的应用服务层分别触发该服务中心的存储层、缓存层更新对应的数据,并生成包含对应的数据更新信息的缓存日志表以存储于所述存储层;
存储同步单元,用于通过该服务中心的存储层将更新的数据以及所述缓存日志表,同步至其他服务中心的存储层,以供其他服务中心的应用服务层根据所述缓存日志表来实现缓存数据同步。
可选的,所述设备还包括:
缓存同步通知单元,用于通过该服务中心的应用服务层,检测到所述存储层存储有所述缓存日志表时,读取所述缓存日志表获取对应的所述数据更新信息,通知其他服务中心的应用服务层以触发缓存数据同步;
和/或
缓存同步响应单元,通过该服务中心的应用服务层接收其他服务中心通知的所述数据更新信息,检测到该服务中心的存储层存储有与所述数据更新信息对应的所述缓存日志表时,从所述存储层获取与所述缓存日志表对应的更新数据,触发该服务中心的缓存层对应更新数据,以实现缓存数据同步。
可选的,所述设备还包括:
第一检测单元,用于通过该服务中心的应用服务层,以预设的第一周期检测述第一服务中心是否存储有所述缓存日志表。
可选的,所述设备还包括:
第二检测单元,用于通过该服务中心的应用服务层,以预设的第二周期检测所述该服务中心的存储层,是否存储有从其他所述服务中心的存储层同步的所述缓存日志表;
缓存同步执行单元,用于当所该服务中心的应用服务层检测到该服务中心的存储层有所述同步的缓存日志表时,从所述存储层获取与所述缓存日志表对应的更新数据,触发该服务中心的缓存层对应更新数据,以实现缓存数据同步。
可选的,所述设备还包括:
删除单元,用于当该服务中心完成缓存数据同步后,通过所述该服务中心的应用服务层,触发该服务中心的存储层删除对应的所述缓存日志表,并将对应的删除操作信息通知至同步所述缓存日志表的服务中心的存储层;
和/或
删除响应单元,用于通过该服务中心的存储层接收其他服务中心通知的所述删除操作信息,删除与所述删除操作信息对应的所述缓存日志表。
根据本发明的第三方面,提供了一种电子设备,包括:
存储器和处理器,
所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行如本发明第一方面提供的任一项所述的缓存数据同步方法。
根据本发明的第四方面,提供了一种服务中心,包括:
应用服务层;
存储层;
缓存层;
以及如本发明第二方面提供的任意一项数据缓存设备或者如本发明第三方面提供的电子设备。
根据本发明的第五方面,提供了一种多中心服务系统,包括多个如本发明第四方面提供的服务中心。
本发明的发明人发现,在现有技术中,尚未存在一种缓存数据同步方法,可以保证多中心服务系统中,任何一个服务中心发生数据更新时,其他服务中心的缓存层能根据存储层同步的缓存日志表获取数据更新信息进行数据更新后,各服务中心缓存数据一致,以提供稳健的网络服务。因此,本发明所要实现的技术任务或者所要解决的技术问题是本领域技术人员从未想到的或者没有预期到的,故本发明是一种新的技术方案。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是现有技术中缓存数据同步方法的示意图;
图2示出了可用于实现本发明的实施例的多中心服务系统的硬件配置的例子的框图;
图3为本发明实施例一提供的缓存数据同步方法的流程图;
图4为本发明实施例二提供的缓存数据同步方法的流程图;
图5为本发明实施例三提供的缓存数据同步方法的流程图;
图6为本发明实施例四提供的缓存数据同步方法的流程图;
图7为本发明实施例提供的缓存数据同步方法的例子的流程示意图;
图8为本发明实施例提供的缓存数据同步设备的示意性框图;
图9为本发明实施例提供的电子设备的示意性框图;
图10为本发明实施例一提供的服务中心的示意性框图;
图11为本发明实施例二提供的服务中心的示意性框图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图2是示出可以实现本发明的实施例的多中心服务系统1000的硬件配置的框图。如图2所示,多中心服务系统1000可以包括网络1100及服务中心1200。
网络1100可以是无线网络也可以是有线网络,可以是局域网也可以是广域网。如图2所示的多中心服务系统1000中,服务中心1200-1、1200-2、1200-3可以通过网络1100进行通信。
服务中心1200可以包含应用服务层、存储层和缓存层。在一个例子中,服务中心1200可以是群组计算机。在另一个例子中,服务中心1200可以如图2所示,包括与存储层对应的存储器1210、与应用服务层对应的服务器1220以及与缓存层对应的缓存器1230。其中,存储器1210可以是包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。服务器1220例如可以是刀片服务器、云服务器等。缓存器1230例如可以是内存条、Cache(高速缓冲存储器)等。
图2所示的多中心服务系统1000仅是解释性的,并且决不是为了要限制本发明、其应用或用途。应用于本发明的实施例中,多中心服务系统1000包含多个服务中心1200,每个服务中心1200均用于实施本发明实施例提供的任意一项缓存数据同步方法,假设其中一个服务中心1200_1是第一服务中心,用以执行本发明实施例提供的任意一项缓存数据同步方法:当第一服务中心存在待更新的数据时,通过所述第一服务中心的应用服务层分别触发所述第一服务中心的存储层、缓存层更新对应的数据,并生成包含对应的数据更新信息的缓存日志表以存储于所述存储层;通过所述第一服务中心的存储层将更新的数据以及所述缓存日志表,同步至第二服务中心的存储层,以供所述第二服务中心的应用服务层根据所述缓存日志表来实现缓存数据同步。
本领域技术人员应当理解,“第一”、“第二”仅是为了方便描述本发明实施例的技术方案而对服务中心进行区分,在实际应用中,不区分第一服务中心和第二服务中心。图2中仅示出了多中心服务系统1000的部分装置。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
<方法实施例>
在本实施例中,提供一种缓存数据同步方法,实施于多中心服务系统,所述多中心服务系统包括多个服务中心,每个所述服务中心至少包括应用服务层、存储层以及缓存层。
在一个例子中,所述多中心服务系统可以如图2所示,其中,应用服务层对应于图2中的服务器1220,存储层对应于图2中的存储器1210,缓存层对应于图2中的缓存器1230。
需要说明的是,本实施例中所述的第一服务中心和第二服务中心,只是为了方便描述本实施例的技术方案而对服务中心进行区分,在数据同步时,服务中心既可以作为第一服务中心,也可以作为第二服务中心。实际应用中,不区分第一服务中心和第二服务中心。
本实施例提供的缓存数据同步方法,如图3所示,包括:
步骤2100、当第一服务中心存在待更新的数据时,通过所述第一服务中心的应用服务层分别触发所述第一服务中心的存储层、缓存层更新对应的数据,并生成包含对应的数据更新信息的缓存日志表以存储于所述存储层。
其中,待更新的数据是指服务中心在提供网络服务时涉及的各个服务中心需同步数据,例如,在提供诸如“王者荣耀”这样的网络游戏服务时,第一服务中心接收了例如“王者荣耀”的游戏礼包,该游戏礼包中包含的具体数据内容就是待更新的数据,各个服务中心之间需要同步更新该王者荣耀游戏礼包包含的数据。
数据更新信息中包含与更新的数据对应的文件名、序号、编号等信息,并包含在存储于存储层的缓存日志表中。
在第一服务中心中,应用服务层触发的存储层更新对应的数据,以及触发的缓存层更新对应的数据的过程没有先后顺序,在存储层和缓存层完成数据更新后,应用服务层生成包含对应的数据更新信息的缓存日志表并将该缓存日志表存储至存储层,以供第二服务中心的应用服务层根据该缓存日志表实现缓存数据的同步。
在一个例子中,当第一服务中心的存储层存储有与多个不同的更新数据对应的缓存日志表时,缓存日志表中还可以包含有唯一对应的缓存日志表标识,以对不同的缓存日志表加以区分。例如,存在多个不同的待更新的数据时,通过第一服务中心的应用服务层分别触发第一服务中心的存储层和缓存层分别更新对应的多个不同的数据,并生成包含对应的数据更新信息的多个缓存日志表,每个缓存日志表中包含唯一对应的缓存日志表标识以进行区分。
步骤2200、通过所述第一服务中心的存储层将更新的数据以及所述缓存日志表,同步至第二服务中心的存储层,以供所述第二服务中心的应用服务层根据所述缓存日志表来实现缓存数据同步。
需要说明的是,第一服务中心和第二服务中心的存储层可以利用同步机制实现缓存数据和缓存日志表的同步。例如,存储层可以利用MySQL数据库实现同步,MySQL是一个关系型数据库管理系统,其中MySQL binlog是MySQL二进制日志,可以用来查看MySQL数据库的变更历史、MySQL数据库增量备份和恢复、MySQL的复制。因此,在本实施例中,利用MySQLbinlog实现第一服务中心和第二服务中心的存储层的缓存数据及缓存日志表的同步,在此不再赘述。
具体的,由于缓存日志表中包含了第一服务中心本次所更新的数据的数据更新信息,因此本步骤中,第一服务中心的存储层在将更新的数据同步至第二服务中心的存储层的同时,会将上述缓存日志表也同步至第二服务中心的存储层,这样,第二服务中心可以根据该缓存日志表中的数据更新信息,从第二服务中心的存储层中获取对应的待更新的数据进行数据更新,以实现缓存数据的同步。
在第一服务中心的存储层将更新的数据及缓存日志表同步至第二服务中心的存储层后,第二服务中心的应用服务层可以根据第一服务中心的通知触发第二缓存中心的缓存层的缓存数据同步;第二服务中心的应用服务层也可以在预设的第二周期检测到第二服务中心的存储层存储有从其他服务中心的存储层同步的缓存日志表时,触发第二缓存中心的缓存层的缓存数据同步。
在一个例子中,第二服务中心的应用服务层根据第一服务中心的通知触发第二缓存中心的缓存层的缓存数据同步,如图4所示,本实施例提供的方法还可以包括:
步骤3100、通过所述第一服务中心的应用服务层,检测到所述存储层存储有所述缓存日志表时,读取所述缓存日志表获取对应的所述数据更新信息,通知所述第二服务中心的应用服务层以触发缓存数据同步。
具体的,第一服务中心的应用服务层可以通过接口将数据更新信息通知第二服务中心的应用服务层,以触发缓存数据同步。
在一个例子中,可以通过第一服务中心的应用服务层,以预设的第一周期检测第一服务中心是否存储有缓存日志表,以便于在检测到存储有缓存日志表时,通知其他的服务中心触发缓存数据同步。
例如,可以设置第一周期为1s,通过第一服务中心的应用服务层,以1s为周期检测第一服务中心的存储层是否存储有缓存日志表,如果检测到存储有缓存日志表,则读取缓存日志表获取对应的数据更新信息,并通过接口通知第二服务中心的应用服务层以触发缓存数据同步。其中,第一周期可以根据实际应用中的需求进行设置,本实施例对此不作限定。
步骤3200、通过所述第二服务中心的应用服务层接收所述数据更新信息,检测到所述第二服务中心的存储层存储有与所述数据更新信息对应的所述缓存日志表时,从所述存储层获取与所述缓存日志表对应的更新数据,触发所述第二服务中心的缓存层对应更新数据,以实现缓存数据同步。
具体的,第二服务中心的应用服务层可以根据接收的数据更新信息中的文件名和/或序号和/或编号,检测第二服务中心的存储层是否存储有对应的缓存日志表。当检测到第二服务中心的存储层存储有与数据更新信息中的文件名和/或序号和/或编号匹配的缓存日志表时,将该缓存日志表确定为与数据更新信息对应的缓存日志表。
在确定第二服务中心的存储层存储有与数据更新信息对应的缓存日志表时,从存储层获取与该缓存日志表对应的更新数据,并触发第二服务中心的缓存层更新数据,实现缓存数据的同步。
在网络存在延迟或异常时,可能确定出第二服务中心的存储层没有存储与数据更新信息对应的缓存日志表,在这种情况下,可以返回重试,再次检测第二服务中心的存储层是否存储有与数据更新信息对应的缓存日志表,直至检测到与数据更新信息对应的缓存日志表为止,再根据缓存日志表获取对应的更新数据,触发第二服务中心的缓存层对应更新数据,实现缓存数据的同步。这样,可以使得第二服务中心根据缓存日志表获取数据更新信息进行数据更新,保证缓存数据与第一服务中心中的缓存数据一致从而保证提供稳健的网络服务。
在另一个例子中,第二服务中心的应用服务层在预设的第二周期检测到第二服务中心的存储层存储有从其他服务中心的存储层同步的缓存日志表时,触发第二缓存中心的缓存层的缓存数据同步,如图5所示,本实施例提供的方法还可以包括:
步骤4100、通过所述第二服务中心的应用服务层,以预设的第二周期检测所述第二服务中心的存储层,是否存储有从其他所述服务中心的存储层同步的所述缓存日志表。
在本例中,其他服务中心的存储层将更新的数据以及所述缓存日志表,同步至第二服务中心的存储层后,不通知第二服务中心的应用服务层触发缓存数据更新,而是在第二服务中心设置第二周期,通过第二服务中心的应用服务层在预设的第二周期检测第二服务中心的存储层是否存储有从其他服务中心的存储层同步的缓存日志表。
其中,预设的第二周期可以根据实际应用中的需求进行设置,本实施例对此不作限制。例如,第二周期可以设置为2s,则通过第二服务中心的应用服务层,以2s为周期检测第二服务中心的存储层是否存储有从其他服务中心的存储层同步的缓存日志表。
步骤4200、当所述第二服务中心的应用服务层检测到所述第二服务中心的存储层有所述同步的缓存日志表时,从所述存储层获取与所述缓存日志表对应的更新数据,触发所述第二服务中心的缓存层对应更新数据,以实现缓存数据同步。
当第二服务中心的应用服务层以预设的第二周期检测到第二服务中心的存储层存储有同步的缓存日志表时,获取存储层中与缓存日志表对应的更新数据,触发第二服务中心的缓存层对应更新数据,实现缓存数据同步。
可以理解的是,若第二服务中心的应用服务层以预设的第二周期,未检测到第二服务中心的存储层存储有同步的缓存日志表,则不需要触发缓存数据同步的过程。
可选的,在完成缓存数据同步后,服务中心的存储层可以删除缓存日志表,以保证不会重复缓存同步或者出现缓存数据同步乱序等异常情况。在一个例子中,如图6所示,本实施例提供的方法进一步还可以包括:
步骤5100、当所述第二服务中心完成缓存数据同步后,通过所述第二服务中心的应用服务层,触发所述第二服务中心的存储层删除对应的所述缓存日志表,并生成对应的数据同步信息的缓存同步完成指示,以通知所述第一服务中心的存储层。
其中,数据同步信息包括实现缓存数据同步的数据信息,例如可以包括数据以及数据的名称。通过第二服务中心的应用服务层,触发第二服务中心的存储层删除对应的缓存日志表的同时,生成缓存同步完成指示,该缓存同步完成指示中包含对应的数据同步信息,并通知第一服务中心的存储层删除对应的缓存日志表,以避免重复缓存同步或出现缓存数据同步乱序等异常情况。
步骤5200、通过所述第一服务中心的存储层接收缓存同步完成指示,确认缓存数据同步后,删除与所述缓存同步完成指示对应的所述缓存日志表。
通过第一服务中心的存储层接收缓存同步完成指示,根据缓存同步完成指示中包含的数据同步信息,确定与缓存同步完成指示对应的缓存日志表,并删除该缓存日志表,以避免重复缓存同步或出现缓存数据同步乱序等异常情况。
对于多个服务中心缓存同步的应用场景,源服务中心,对应于本实施例中的第一服务中心,会接收到其他服务中心的缓存同步完成指示,源服务中心在确认所有的服务中心都完成缓存数据同步后,才删除自身存储的、与缓存同步完成指示对应的缓存日志表,以确保所有的服务中心所缓存的数据一致,以提供稳健的网络服务。
本实施例提供的缓存数据同步方法,可以确保多中心服务系统中,任何一个服务中心发生数据更新时,其他服务中心的缓存层能根据存储层同步的缓存日志表获取数据更新信息进行数据更新,实现各服务中心缓存数据一致,以提供稳健的网络服务。
<例子>
下面结合图7所示的例子对本实施例中提供的缓存数据同步方法进行进一步说明。
任意两个服务中心之间的数据同步包括两个服务中心的存储层的数据同步以及缓存层同步,通常如图7所示。
在图7中,以A地机房的第一服务中心和B地机房的第二服务中心示例,当第一服务中心发生数据更新时,本例提供的缓存数据同步方法包括:
Step1,第一服务中心的应用服务层触发第一服务中心的存储层更新对应的数据。
例如,第一服务中心中,更新的数据为礼包ID为001的“王者荣耀”游戏礼包,第一服务中心的应用服务层触发存储层中更新“王者荣耀”耀游戏礼包中包含的数据。
Step2,第一服务中心的应用服务层生成缓存日志表并存储于存储层。
在第一服务中心的存储层更新“王者荣耀”游戏礼包对应的数据后,第一服务中心的应用服务层生成对应的缓存日志表,缓存日志表用于记录对应的数据更新信息。缓存日志表中包含的数据更新信息例如可以如下表所示,其中,“主键”用于唯一的标识该数据更新信息,以区分其他数据更新的更新信息,“缓存key”为该数据更新条目下具体更新数据内容的标识,例如,在本例中,“缓存key”是王者荣耀游戏礼包的数据对应的数据标识。
表一
Step3,第一服务中心的应用服务层触发缓存层从存储层获取更新的数据来更新数据。
本步骤中,第一服务中心的应用服务层可以在预设的第一周期检测第一服务中心的存储层是否存储有缓存日志表,若检测到第一服务中心的存储层存储有缓存日志表,则触发缓存层从存储层获取“主键:001”对应的数据更新信息,并对应的获取“缓存key为scene_001”所对应的更新数据,根据所获取的更新数据更新缓存层中的缓存数据。
Step4,第一服务中心的存储层将更新的数据以及缓存日志表同步至第二服务中心的存储层。
第一服务中心具体可以利用MySQL binlog将更新的数据“王者荣耀游戏礼包”以及对应的缓存数据表同步至B地的第二服务中心的存储层。
Step5,第二服务中心的应用服务层检测第二服务中心的存储层是否存储有缓存日志表。
在一个例子中,第二服务中心的应用服务层可以在接收到第一服务中心的应用服务层的通知后,根据数据更新信息,检测第二服务中心的存储层是否存储有对应的缓存日志表。
例如,数据更新信息中包含了“主键:001”,则第二服务中心的应用服务层根据该数据更新信息,检测第二服务中心的存储从是否存储有“主键:001”的缓存日志表。
若未检测到第二服务中心的存储层存储有对应的缓存日志表,则返回重试代码,直至检测到第二服务中心的存储层存储有对应的缓存日志表。
在另一个例子中,第二服务中心的应用服务层可以在预设的第二周期检测第二服务中心的存储层是否存储有从其他服务中心同步的缓存日志表。例如,第二服务中心的应用服务层在预设的第二周期检测第二服务中心的存储层存储有从其他服务中心同步的、如上述表一所示的缓存日志表。
若检测到第二服务中心的存储层存储有从其他服务中心同步的缓存日志表,则执行Step6,若未检测到第二服务中心的存储层存储有从其他服务中心同步的缓存日志表,则不执行任何操作。
Step6,第二服务中心的应用服务层检测到缓存日志表时,从存储层获取与缓存日志表对应的更新数据。
第二服务中心根据第一服务中心通知的数据更新信息“主键:001”,检测到第二服务中心的存储层存储有与“主键:001”对应的缓存日志表;或者,第二服务中心在预设的第二周期检测到第二服务中心的存储层存储有从其他服务中心同步的缓存日志表,例如上述表一所示的缓存日志表,第二服务中心的应用服务层从存储层获取与缓存日志表中“缓存key:scene_001”对应的更新数据。
Step7,第二服务中心的应用服务层触发第二服务中心的缓存层对应更新数据,实现缓存数据同步。
第二服务中心在获取到与缓存日志表中“缓存key:scene_001”对应的更新数据后,触发第二服务中心的缓存层对应更新数据,从而实现A地的第一服务中心与B地的第二服务中心的缓存数据同步。
进一步的,第二服务中心在完成缓存数据同步后,还可以通过第二服务中心的应用服务层,触发第二服务中心的存储层删除对应的缓存日志表,例如上述表一;并生成对应的数据同步信息的缓存同步完成指示,数据同步信息中包含完成同步的缓存数据“王者荣耀游戏礼包”的对应的编号“缓存key为scene_001”,并通过第二服务中心的存储层将该缓存同步完成指示同步至第一服务中心的存储层。
接收到该缓存同步完成指示的第一服务中心的存储层,在确认与该“缓存key为scene_001”对应的缓存数据已同步后,删除对应的缓存日志表。以避免重复缓存同步或出现缓存数据同步乱序等异常情况。
以上已经结合附图和例子说明本实施例提供的缓存数据同步方法,基于缓存日志表实现缓存数据同步,可以确保多中心服务系统中,任何一个服务中心发生数据更新时,其他服务中心的缓存层能根据存储层同步的缓存日志表获取数据更新信息进行数据更新,实现各服务中心缓存数据一致,以提供稳健的网络服务。
<设备>
图8为本发明实施例提供的缓存数据同步设备的示意性框图。应用于多中心服务系统,所述多中心服务系统包括多个服务中心,每个所述服务中心至少包括应用服务层、存储层以及缓存层,所述缓存数据同步设备设置于任意一个服务中心侧,如图8所示,本实施例提供的缓存数据同步设备6000包括:
本地更新单元6100,用于当该服务中心存在待更新的数据时,通过该服务中心的应用服务层分别触发该服务中心的存储层、缓存层更新对应的数据,并生成包含对应的数据更新信息的缓存日志表以存储于所述存储层;
存储同步单元6200,用于通过该服务中心的存储层将更新的数据以及所述缓存日志表,同步至其他服务中心的存储层,以供其他服务中心的应用服务层根据所述缓存日志表来实现缓存数据同步。
可选的,缓存数据同步设备6000还包括:
缓存同步通知单元,用于通过该服务中心的应用服务层,检测到所述存储层存储有所述缓存日志表时,读取所述缓存日志表获取对应的所述数据更新信息,通知其他服务中心的应用服务层以触发缓存数据同步;
和/或
缓存同步响应单元,通过该服务中心的应用服务层接收其他服务中心通知的所述数据更新信息,检测到该服务中心的存储层存储有与所述数据更新信息对应的所述缓存日志表时,从所述存储层获取与所述缓存日志表对应的更新数据,触发该服务中心的缓存层对应更新数据,以实现缓存数据同步。
可选的,缓存数据同步设备6000还包括:
第一检测单元,用于通过该服务中心的应用服务层,以预设的第一周期检测述第一服务中心是否存储有所述缓存日志表。
可选的,缓存数据同步设备6000还包括:
第二检测单元,用于通过该服务中心的应用服务层,以预设的第二周期检测所述该服务中心的存储层,是否存储有从其他所述服务中心的存储层同步的所述缓存日志表;
缓存同步执行单元,用于当所该服务中心的应用服务层检测到该服务中心的存储层有所述同步的缓存日志表时,从所述存储层获取与所述缓存日志表对应的更新数据,触发该服务中心的缓存层对应更新数据,以实现缓存数据同步。
可选的,缓存数据同步设备6000还包括:
删除单元,用于当该服务中心完成缓存数据同步后,通过所述该服务中心的应用服务层,触发该服务中心的存储层删除对应的所述缓存日志表,并将对应的删除操作信息通知至同步所述缓存日志表的服务中心的存储层;
和/或
删除响应单元,用于通过该服务中心的存储层接收其他服务中心通知的所述删除操作信息,删除与所述删除操作信息对应的所述缓存日志表。
在本实施例中,并不限制缓存数据同步设备6000的实施形式,例如,缓存数据同步设备可以是一个外设的独立设备,与如图2所示的服务中心1200建立通信连接,以实施本实施中提供的缓存数据同步方法;缓存数据同步设备也可以是一个内置的功能单元,设置于如图2所示的服务中心1200中建立通信连接,以实施本实施中提供的缓存数据同步方法;或者,缓存数据同步设备也可以是如图2所示的服务中心1200本身。在此不一一列举。
在本实施例中,还提供一种服务中心8000,如图9所示,包括:
应用服务层8100;
存储层8200;
缓存层8300;
以及如本实施例提供的任意一项缓存数据同步设备6000。
本实施例提供的服务中心8000,可作为第一服务中心或第二服务中心执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
应当理解的是,在本实施例中“第一”、“第二”并不是特定的标识,对应特定的设备,具体地本实施例提供的缓存数据同步设备6000可作为第一服务中心或第二服务中心执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在本实施例中,提供一种电子设备。如图10所示,本实施例提供的电子设备7000包括:
包括存储器7100和处理器7200,所述存储器7100用于存储指令,所述指令用于控制所述处理器7200进行操作以执行本发明实施例提供的缓存数据同步方法。
本实施例提供的电子设备7000可以是独立于如图2所示的服务中心1200的设备,与图2所示的服务中心1200建立通信连接,以实施本实施例中提供的缓存数据同步方法;电子设备7000也可以是设置于如图2所示的服务中心1200中的功能单元,与图2所示的服务中心1200建立通信连接,以实施本实施例中提供的缓存数据同步方法;或者,电子设备7000也可以是如图2所示的服务中心1200本身。在此不一一列举。
应当理解的是,本实施例提供的电子设备7000可作为第一服务中心或第二服务中心执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在本实施例中,还提供一种服务中心8000。如图11所示,本实施例提供的服务中心8000包括:
应用服务层8100;
存储层8200;
缓存层8300;
以及如本实施例提供的电子设备7000。
具体的,电子设备7000的存储器7100与存储层8200可以是物理上的一个实体设备;电子设备7000的处理器7200与应用服务层8100可以是物理上的一个实体设备。
本实施例的服务中心8000,可作为第一服务中心或第二服务中心执行本发明方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。在一个例子中,所述服务中心8000可以是如图2所示的服务中心1200。
在本实施例中,还提供一种多中心服务系统,包括多个本实施例中提供的服务中心8000。
在一个具体的例子中,本实施例提供的多中心服务系统的硬件配置可以如图2所示的多中心服务系统1000。
以上已经结合附图和例子说明了本实施例提供的缓存数据同步方法、设备、服务中心及系统,可以确保多中心服务系统中,任何一个服务中心发生数据更新时,其他服务中心的缓存层能根据存储层同步的缓存日志表获取数据更新信息进行数据更新,实现各服务中心缓存数据一致,以提供稳健的网络服务。
本领域技术人员公知的是,随着诸如大规模集成电路技术的电子信息技术的发展和软件硬件化的趋势,要明确划分计算机系统软、硬件界限已经显得比较困难了。因为,任何操作可以软件来实现,也可以由硬件来实现。任何指令的执行可以由硬件完成,同样也可以由软件来完成。对于某一机器功能采用硬件实现方案还是软件实现方案,取决于价格、速度、可靠性、存储容量、变更周期等非技术性因素。因此,对于电子信息技术领域的普通技术人员来说,更为直接和清楚地描述一个技术方案的方式是描述该方案中的各个操作。在知道所要执行的操作的情况下,本领域技术人员可以基于对所述非技术性因素的考虑直接设计出期望的产品。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储层、磁存储层、光存储层、电磁存储层、半导体存储层或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储层(RAM)、只读存储层(ROM)、可擦式可编程只读存储层(EPROM或闪存)、静态随机存取存储层(SRAM)、便携式压缩盘只读存储层(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储层。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。