一种数据缓存的方法和系统的制作方法

文档序号:6511260阅读:162来源:国知局
一种数据缓存的方法和系统的制作方法
【专利摘要】本发明提供一种数据缓存的方法和系统,有助于提高分布式缓存系统中各个缓存服务器所缓存数据的一致性。本发明的数据缓存的方法应用于具有多个缓存服务器的系统中,该方法包括:在第一缓存服务器的缓存数据发生变化的情况下,该第一缓存服务器向管理服务器发送第一提示信息,该第一提示信息中包含所述第一缓存服务器的标识;所述管理服务器在收到所述第一提示信息后,向预先选择的多个缓存服务器发送第一通知信息,该第一通知信息中包含所述第一缓存服务器的标识;所述预先选择的多个缓存服务器根据收到的所述第一通知信息中的第一缓存服务器的标识,从所述第一缓存服务器获取所述变化后的数据。
【专利说明】一种数据缓存的方法和系统
【技术领域】
[0001]本发明涉及一种数据缓存的方法和系统。
【背景技术】
[0002]在高并发的应用系统中,缓存一般介于应用服务器和数据库之间,以缓冲数据的角色出现,作用是为了降低应用系统对数据库访问的频率,从而提高系统的性能,因为对数据库的访问效率较低是影响应用系统整体性能的重要方面。缓存内的数据是对数据的热点数据进行复制。热点数据通常是指用户频繁请求操作的数据,例如一些查询数据。如果数据在缓存中,则无需对数据库进行访问,从而大大减轻数据库的压力,提升了系统的性能。
[0003]在大型应用系统中,通常采用分布式缓存,通过第三方化的思想,即将缓存作为独立的中间件提供集群化的实现,减少应用服务器和缓存之间的耦合性。分布式缓存所管理的机器实际上就是一个集群,它负责维护集群中成员列表的更新,并负责执行各种操作,在集群成员发生故障时执行故障转移,以及在机器重新加入集群时执行故障恢复。在分布式缓存中,数据重复地缓存在分布式缓存系统的多台成员机器上,这样只要有一个成员发生故障,其他成员便可以继续提供该数据。
[0004]对于分布式缓存来说,各个成员机器中缓存的数据都可能被外部应用进行修改,而且各成员机器在发生故障或掉电、重启等情况下缓存的数据会全部丢失,此时应保证各个成员机器中缓存的数据的一致性,以确保向外部请求的响应的正确性。

【发明内容】

[0005]有鉴于此,本发明提供一种数据缓存的方法和系统,有助于提高分布式缓存系统中各个缓存服务器所缓存数据的一致性。
[0006]为实现上述目的,根据本发明的一个方面,提供了 一种数据缓存的方法。
[0007]本发明的数据缓存的方法应用于具有多个缓存服务器的系统中,该方法包括:在第一缓存服务器的缓存数据发生变化的情况下,该第一缓存服务器向管理服务器发送第一提示信息,该第一提示信息中包含所述第一缓存服务器的标识;所述管理服务器在收到所述第一提示信息后,向预先选择的多个缓存服务器发送第一通知信息,该第一通知信息中包含所述第一缓存服务器的标识;所述预先选择的多个缓存服务器根据收到的所述第一通知信息中的第一缓存服务器的标识,从所述第一缓存服务器获取所述变化后的数据。
[0008]可选地,还包括:各个所述缓存服务器定期向所述管理服务器发送心跳消息;所述管理服务器在预设数目次未收到第二缓存服务器的心跳消息的情况下,在再次收到该第二缓存服务器的心跳消息后,向该第二缓存服务器发送第二通知信息,该第二通知信息中包含第三缓存服务器的标识;所述第二缓存服务器根据收到的所述第二通知信息中的第三缓存服务器的标识,从所述第三缓存服务器获取该第三缓存服务器缓存的所有数据。
[0009]可选地,还包括:第四缓存服务器在其缓存的第一数据条目发生变化的情况下,向所述管理服务器发送第二提示信息,该第二提示信息中包含该第四缓存服务器的标识及其缓存的第一数据条目发生变化的时间以及该第一数据条目的标识;第五缓存服务器在其缓存的所述第一数据条目发生变化的情况下,向所述管理服务器发送第三提示信息,该第三提示信息中包含该第五缓存服务器的标识及其缓存的所述第一数据条目发生变化的时间以及该第一数据条目的标识;所述管理服务器比较所述第二提示信息中包含的所述时间和所述第三提示信息中包含的所述时间,确定出缓存的所述第一数据条目发生变化的时间在后的缓存服务器,然后将包含有该缓存服务器的标识的第三通知信息发送给预先选择的多个缓存服务器,该多个缓存服务器在收到该第三通知信息后,按照该第三通知信息中包含的缓存服务器的标识从该缓存服务器获取所述第一数据条目发生变化后的数据。
[0010]可选地,还包括:所述管理服务器持久化保存所述缓存服务器中缓存的数据。
[0011]根据本发明的另一方面,提供了一种数据缓存的系统。
[0012]本发明的数据缓存的系统设置在具有多个缓存服务器的系统中,所述数据缓存的系统包括管理服务装置和多个缓存服务装置,其中:所述缓存服务装置设置在所述缓存服务器中,用于在所在的缓存服务器的缓存数据发生变化的情况下,向所述管理服务装置发送第一提示信息,该第一提示信息中包含所在的缓存服务器的标识;所述管理服务装置设置在管理服务器中,用于在收到所述第一提示信息后,向预先选择的多个所述缓存服务器中的缓存服务装置发送第一通知信息,该第一提示信息中包含发送该第一提示信息的缓存服务装置所在的缓存服务器的标识;所述缓存服务装置还用于根据收到的所述第一通知信息中的缓存服务器的标识,从该缓存服务器获取该缓存服务器中发生变化后的数据。
[0013]可选地,所述缓存服务装置还用于定期向所述管理服务器发送心跳消息;所述管理服务装置还用于在预设数目次未收到来自缓存服务器的心跳消息的情况下,在再次收到来自该缓存服务器的心跳消息后,向该缓存服务器发送第二通知信息,该第二通知信息中包含指定的缓存服务器的标识;所述缓存服务装置还用于根据收到的所述第二通知信息中包含的指定的缓存服务器的标识,从该指定的缓存服务器中获取该指定的缓存服务器缓存的所有数据。
[0014]可选地,所述缓存服务装置还用于在其所在缓存服务器缓存的数据条目发生变化的情况下,向所述管理服务器发送第二提示信息,该第二提示信息中包含其所在缓存服务器的标识以及所述数据条目发生变化的时间以及该第一数据条目的标识;所述管理服务装置还用于在收到来自于两个所述缓存服务器的第二提示信息,并且该两个第二提示信息包含的时间是同一数据条目发生变化的时间的情况下,确定缓存的数据条目发生变化的时间在后的缓存服务器,然后将包含该缓存服务器的标识的第三通知信息发送给预先选择的多个缓存服务器;所述缓存服务装置还用于在其所在的缓存服务器收到所述第三通知信息的情况下,按照该第三通知信息中包含的缓存服务器的标识从该缓存服务器获取所述同一数据条目发生变化后的数据。
[0015]可选地,所述管理服务装置还用于使所述管理服务器持久化保存所述缓存服务器中缓存的数据。
[0016]根据本发明的技术方案,在具有多个缓存服务器的系统中,若有缓存服务器的缓存数据发生变化,则向管理服务器发送提示信息,使管理服务器通知其他缓存服务器也进行缓存数据更新,由此可以保证各台缓存服务器的缓存数据的一致性。在缓存服务器从异常中恢复后,更新其中缓存的所有数据,从而与其他缓存服务器的缓存数据保持一致。在产生并发操作的情况下,根据操作的时间先后,以在后的操作为准对各缓存服务器的缓存数据进行统一。以上这些都有助于提高分布式缓存系统中各个缓存服务器所缓存数据的一致性。这样,在任一台缓存服务器被写入数据时,可以从其他多台缓存服务器读取到该数据的最新内容,实现了一次写入多次读取,提高了分布式缓存系统的性能。
【专利附图】

【附图说明】
[0017]附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0018]图1是根据本发明实施例的分布式缓存系统的基本结构的示意图;
[0019]图2是根据本发明实施例的数据缓存的方法的基本步骤的示意图;
[0020]图3是根据本发明实施例的缓存服务器进行灾难恢复的流程的示意图;
[0021]图4是根据本发明实施例的分布式缓存系统处理并发操作的流程的示意图;
[0022]图5是根据本发明实施例的数据缓存的系统的示意图。
【具体实施方式】
[0023]以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0024]图1是根据本发明实施例的分布式缓存系统的基本结构的示意图。如图1所示,分布式缓存系统10中有多个缓存服务器111、112、113、……、11N,以及至少I个管理服务器,图中示出了 3个管理服务 器121、122、123。在实际应用时,运行I个管理服务器(例如管理服务器121),其他管理服务器作为备用。
[0025]在每台缓存服务器内存中,对缓存数据按需求划分成数据对象,以数据对象的包名+类名+方法名+方法参数列表,组成缓存中的唯一地址;每个数据条目中,将数据对象以hashMap的键值对方式存储,其中Key为上述的唯一地址,Value值为对应的数据对象。
[0026]以下结合图1和图2对本发明实施例的数据缓存的方法加以举例说明。图2是根据本发明实施例的数据缓存的方法的基本步骤的示意图。该方法应用于具有多个缓存服务器的分布式缓存系统中。
[0027]步骤S21:缓存服务器111接收外部应用对其缓存的数据条目的修改。例如修改的数据条目是K1-V1,该数据条目的键名(Key)为K1,键值(Value)为VI,修改后键值变为V2,从而该数据条目更新成为K1-V2。
[0028]步骤S22:缓存服务器111向管理服务器121发送提示信息。该提示信息中包含缓存服务器111的标识。
[0029]步骤S23:管理服务器121向预先选择的多个缓存服务器发送第一通知信息。该第一通知信息中包含缓存服务器111的标识。这里的预先选择的缓存服务器可以是系统10中的部分或全部缓存服务器。
[0030]步骤S24:上述的预先选择的多个缓存服务器接收缓存服务器111的标识。由此这些预先选择的多个缓存服务器可以得知从哪个缓存服务器获取变化后的数据。
[0031]步骤S25:上述的预先选择的多个缓存服务器从缓存服务器111获取变化后的数据。具体可以是这些缓存服务器向缓存服务器111发送请求信息,缓存服务器111向这些缓存服务器发送数据条目K1-V2,后者将自身缓存的数据条目Kl-Vl修改为K1-V2。可以看出这样就使得在一台缓存服务器的缓存数据发生变化的情况下,其他被选定的缓存服务器的缓存数据也随之更新从而保持缓存数据的一致性。 [0032]在本实施例中,如果缓存服务器发生故障或重启,则进行灾难恢复,对这台缓存服务器缓存的数据全部更新,具体可采用如图3所示的步骤。图3是根据本发明实施例的缓存服务器进行灾难恢复的流程的示意图。
[0033]步骤S31:各个缓存服务器定期向管理服务器121发送心跳消息。本步骤是系统10正常运行时各个缓存服务器持续进行的操作。
[0034]步骤S32:管理服务器121确认3次未收到缓存服务器111发送的心跳消息。因为是定期发送心跳消息,所以管理服务器按照该定期的周期进行统计,在一直未收到心跳消息的情况下,经过几个周期即为几次未收到心跳消息。此时管理服务器121认为缓存服务器111发生异常。
[0035]步骤S33:管理服务器121再次收到缓存服务器111发送的心跳消息。此时管理服务器121认为缓存服务器111恢复正常运行,需对其进行灾难恢复。
[0036]步骤S34:管理服务器121向缓存服务器111发送第二通知信息。该第二通知信息中包含缓存服务器112的标识,也就是说管理服务器121将另一台缓存服务器提供给需要灾难恢复的缓存服务器。
[0037]步骤S35:缓存服务器111接收第二通知信息。
[0038]步骤S36:缓存服务器111从缓存服务器112获取缓存服务器112缓存的全部数据。
[0039]在应用系统中常常会出现并发操作,即有两个外部应用同时对一个数据条目进行修改。根据图2的流程,缓存服务器在缓存数据发生变化时会通知管理服务器。管理服务器可以据此对并发操作时的缓存服务器的内容进行管理。具体可采用图4所示的流程,图4是根据本发明实施例的分布式缓存系统处理并发操作的流程的示意图。
[0040]步骤S411:缓存服务器112收到外部应用的操作,将缓存条目K2-V4修改为K2-V5。
[0041]步骤S412:缓存服务器112向管理服务器121发送提示信息。该提示信息中包含缓存服务器112的标识以及步骤S411中缓存条目K2-V4被修改为K2-V5的时间Tl,同时也包括该缓存条目的标识K2。例如Tl为201306231125 (以年月日时分秒表示)。
[0042]步骤S421:缓存服务器113收到外部应用的操作,将缓存条目K2-V4修改为K2-V6。
[0043]步骤S422:缓存服务器113向管理服务器121发送提示信息。该提示信息中包含缓存服务器113的标识以及步骤S421中缓存条目K2-V4被修改为K2-V6的时间T2,同时也包括该缓存条目的标识K2。例如T2为201306231126。
[0044]步骤S43:管理服务器121根据Tl和T2,判断Tl和T2的大小关系。
[0045]步骤S44:管理服务器121将第三通知信息发送给预先选择的多个缓存服务器。因为T2>T1,所以该第三通知信息中包含的是缓存服务器113的标识。
[0046]步骤S45:上述预先选择的多个缓存服务器接收第三通知信息。[0047]步骤S46:上述预先选择的多个缓存服务器从缓存服务器113获取缓存条目K2-V6中的数据。
[0048]可以看出,通过比较并发操作的具体时间,可以使并发操作下被修改的数据条目的内容在多个缓存服务器中保持一致性。
[0049]本实施例的技术方案可以基于Zooke印er技术实现,其中各个缓存服务器111、112、……、11N作为缓存节点,管理服务器121作为zooke印er领导者,其他管理服务器作为zooke印er跟随者。在管理服务器121出现故障的情况下,可以从跟随者中再选举出一个领导者。每台缓存服务器可以设置监视标识(watcher),当一台缓存服务器缓存数据发生变化时,修改zookeeper服务器中的路径(zookeeper在存储信息时以目录树形存信息)存储信息,当zookeeper存储信息发生变化时,zookeeper服务器向设置有watcher的缓存服务器发送一个一次性的触发通知事件,缓存服务器收到通知后,更新本地缓存变化的数据。此外管理服务器还可以将缓存服务器中的数据持久化保存到数据库或磁盘上。
[0050]图5是根据本发明实施例的数据缓存的系统的示意图。该数据缓存的系统设置在分布式缓存系统中,例如图1中的系统10,同示于图5中。数据缓存的系统50包括多个缓存服务装置,以及管理服务装置。缓存服务装置设置在缓存服务器中,管理服务装置设置在管理服务器中。例如缓存服务器111中设置有缓存服务装置511,管理服务器121中设置有管理服务装置521。
[0051]缓存服务装置用于在所在的缓存服务器的缓存数据发生变化的情况下,向管理服务装置发送第一提示信息,该第一提示信息中包含所在的缓存服务器的标识。
[0052]管理服务装置用于在收到第一提示信息后,向预先选择的多个缓存服务器中的缓存服务装置发送第一通知信息,该第一提示信息中包含发送该第一提示信息的缓存服务装置所在的缓存服务器的标识。
[0053]缓存服务装置还 用于根据收到的第一通知信息中的缓存服务器的标识,从该缓存服务器获取该缓存服务器中发生变化后的数据。
[0054]缓存服务装置还可用于定期向管理服务器发送心跳消息;这样,管理服务装置还可用于在预设数目次未收到来自缓存服务器的心跳消息的情况下,在再次收到来自该缓存服务器的心跳消息后,向该缓存服务器发送第二通知信息,该第二通知信息中包含指定的缓存服务器的标识;并且缓存服务装置还可用于根据收到的第二通知信息中包含的指定的缓存服务器的标识,从该指定的缓存服务器中获取该指定的缓存服务器缓存的所有数据。
[0055]缓存服务装置还可用于在其所在缓存服务器缓存的数据条目发生变化的情况下,向管理服务器发送第二提示信息,该第二提示信息中包含其所在缓存服务器的标识以及所述数据条目发生变化的时间以及该第一数据条目的标识;这样,管理服务装置还可用于在收到来自于两个缓存服务器的第二提示信息,并且该两个第二提示信息包含的时间是同一数据条目发生变化的时间的情况下,确定缓存的数据条目发生变化的时间在后的缓存服务器,然后将包含该缓存服务器的标识的第三通知信息发送给预先选择的多个缓存服务器;并且缓存服务装置还可用于在其所在的缓存服务器收到第三通知信息的情况下,按照该第三通知信息中包含的缓存服务器的标识从该缓存服务器获取上述同一数据条目发生变化后的数据。
[0056]根据本发明实施例的技术方案,在具有多个缓存服务器的系统中,若有缓存服务器的缓存数据发生变化,则向管理服务器发送提示信息,使管理服务器通知其他缓存服务器也进行缓存数据更新,由此可以保证各台缓存服务器的缓存数据的一致性。在缓存服务器从异常中恢复后,更新其中缓存的所有数据,从而与其他缓存服务器的缓存数据保持一致。在产生并发操作的情况下,根据操作的时间先后,以在后的操作为准对各缓存服务器的缓存数据进行统一。以上这些都有助于提高分布式缓存系统中各个缓存服务器所缓存数据的一致性。这样,在任一台缓存服务器被写入数据时,可以从其他多台缓存服务器读取到该数据的最新内容,实现了一次写入多次读取,提高了分布式缓存系统的性能。
[0057]以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本发明的方法和设备的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
[0058]因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来开发出的任何存储介质。
[0059]还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
[0060]上述【具体实施方式】,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
【权利要求】
1.一种数据缓存的方法,应用于具有多个缓存服务器的系统中,其特征在于,该方法包括: 在第一缓存服务器的缓存数据发生变化的情况下,该第一缓存服务器向管理服务器发送第一提不信息,该第一提不信息中包含所述第一缓存服务器的标识; 所述管理服务器在收到所述第一提示信息后,向预先选择的多个缓存服务器发送第一通知信息,该第一通知信息中包含所述第一缓存服务器的标识; 所述预先选择的多个缓存服务器根据收到的所述第一通知信息中的第一缓存服务器的标识,从所述第一缓存服务器获取所述变化后的数据。
2.根据权利要求1所述的方法,其特征在于,还包括: 各个所述缓存服务器定期向所述管理服务器发送心跳消息; 所述管理服务器在预设数目次未收到第二缓存服务器的心跳消息的情况下,在再次收到该第二缓存服务器的心跳消息后,向该第二缓存服务器发送第二通知信息,该第二通知信息中包含第三缓存服务器的标识; 所述第二缓存服务器根据收到的所述第二通知信息中的第三缓存服务器的标识,从所述第三缓存服务器获取该第三缓存服务器缓存的所有数据。
3.根据权利要求1所述的方法,其特征在于,还包括: 第四缓存服务器在其缓存的第一数据条目发生变化的情况下,向所述管理服务器发送第二提示信息,该第二提示信息中包含该第四缓存服务器的标识及其缓存的第一数据条目发生变化的时间以及该第一数据条目的标识;. 第五缓存服务器在其缓存的所述第一数据条目发生变化的情况下,向所述管理服务器发送第三提示信息,该第三提示信息中包含该第五缓存服务器的标识及其缓存的所述第一数据条目发生变化的时间以及该第一数据条目的标识; 所述管理服务器比较所述第二提示信息中包含的所述时间和所述第三提示信息中包含的所述时间,确定出缓存的所述第一数据条目发生变化的时间在后的缓存服务器,然后将包含有该缓存服务器的标识的第三通知信息发送给预先选择的多个缓存服务器,该多个缓存服务器在收到该第三通知信息后,按照该第三通知信息中包含的缓存服务器的标识从该缓存服务器获取所述第一数据条目发生变化后的数据。
4.根据权利要求1所述的方法,其特征在于,还包括:所述管理服务器持久化保存所述缓存服务器中缓存的数据。
5.一种数据缓存的系统,设置在具有多个缓存服务器的系统中,其特征在于,所述数据缓存的系统包括管理服务装置和多个缓存服务装置,其中: 所述缓存服务装置设置在所述缓存服务器中,用于在所在的缓存服务器的缓存数据发生变化的情况下,向所述管理服务装置发送第一提示信息,该第一提示信息中包含所在的缓存服务器的标识; 所述管理服务装置设置在管理服务器中,用于在收到所述第一提示信息后,向预先选择的多个所述缓存服务器中的缓存服务装置发送第一通知信息,该第一提示信息中包含发送该第一提示信息的缓存服务装置所在的缓存服务器的标识; 所述缓存服务装置还用于根据收到的所述第一通知信息中的缓存服务器的标识,从该缓存服务器获取该缓存服务器中发生变化后的数据。
6.根据权利要求5所述的数据缓存的系统,其特征在于, 所述缓存服务装置还用于定期向所述管理服务器发送心跳消息; 所述管理服务装置还用于在预设数目次未收到来自缓存服务器的心跳消息的情况下,在再次收到来自该缓存服务器的心跳消息后,向该缓存服务器发送第二通知信息,该第二通知信息中包含指定的缓存服务器的标识; 所述缓存服务装置还用于根据收到的所述第二通知信息中包含的指定的缓存服务器的标识,从该指定的缓存服务器中获取该指定的缓存服务器缓存的所有数据。
7.根据权利要求5所述的数据缓存的系统,其特征在于, 所述缓存服务装置还用于在其所在缓存服务器缓存的数据条目发生变化的情况下,向所述管理服务器发送第二提示信息,该第二提示信息中包含其所在缓存服务器的标识以及所述数据条目发生变化的时间以及该第一数据条目的标识; 所述管理服务装置还用于在收到来自于两个所述缓存服务器的第二提示信息,并且该两个第二提示信息包含的时间是同一数据条目发生变化的时间的情况下,确定缓存的数据条目发生变化的时间在后的缓存服务器,然后将包含该缓存服务器的标识的第三通知信息发送给预先选择的多个缓存服务器; 所述缓存服务装置还用于在其所在的缓存服务器收到所述第三通知信息的情况下,按照该第三通知信息中包含的缓存服务器的标识从该缓存服务器获取所述同一数据条目发生变化后的数据。
8.根据权利要求5所述的数据缓存的系统,其特征在于,所述管理服务装置还用于使所述管理服务器持久化保存所述缓存服务器中缓存的数据。
【文档编号】G06F12/08GK103475718SQ201310414149
【公开日】2013年12月25日 申请日期:2013年9月11日 优先权日:2013年9月11日
【发明者】卢彬彬 申请人:北京京东尚科信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1