分布式缓存系统、数据的缓存方法及缓存数据的查询方法

文档序号:7767265阅读:498来源:国知局
专利名称:分布式缓存系统、数据的缓存方法及缓存数据的查询方法
技术领域
本发明涉及互联网数据缓存领域,尤其涉及一种分布式缓存系统、数据的缓存方 法及缓存数据的查询方法。
背景技术
在互联网应用领域中,数据缓存技术至关重要,不仅要保证数据缓存的可扩展性, 还要保证数据缓存的性能、可靠性。同类缓存系统大都可以解决扩展性问题,但是无法很好 地解决缓存的可靠性,而对于常用数据、会话等信息的缓存,需要很高的可靠性。一种缓存架构如图1所示,TOB服务器和缓存服务器是一体的,也即是将数据缓存 在内存中的,不需要网络通信,这样当WEB服务器需要重新启动时,客户端的缓存数据也丢 失了 ;不仅如此,由于相同的数据要在不同的WEB服务器上面进行缓存,这样命中率(命中 率=命中数/[命中数+没有命中数])也比较低。经过改进的缓存架构是将Cache服务器(缓存服务器)和WEB服务器分离,如图 2所示,分离后的WEB服务器可以将缓存数据存入到缓存服务器节点中,在查询时从节点中 查找缓存数据,如果找不到缓存数据。从数据库查询,然后再将数据写入到这个节点。这样 的优势是可缓存的数据量可以通过增加缓存服务器来进行扩展,命中率高,并且重启单台 WEB服务器也不会影响缓存服务。但是以上架构在某台缓存服务器宕机时还是会影响服务,如果缓存的是常用数据 库内容信息,会导致瞬间并发量增加,导致数据库宕机;如果缓存的是用户会话数据,则会 导致用户会话永久丢失,用户还需要重新登录,WEB服务质量大打折扣。

发明内容
本发明的实施例旨在提供一种分布式缓存系统及写入缓存数据的方法,以解决在 写入缓存数据时的可靠性问题。为实现上述目的,本发明的实施例提供了一种分布式缓存系统,包括至少两个缓存服务器群;其中每个缓存服务器群具有至少一个缓存服务器节点;其中所述至少两个缓存服务器群中的一个缓存服务器群以及该一个缓存服务器 群中的一个缓存服务器节点分别作为缓存数据的主缓存服务器群和主缓存服务器节点,其 它缓存服务器群以及其中的一个缓存服务器节点作为所述缓存数据的备份缓存服务器群 和备份缓存服务器节点;其中所述主缓存服务器节点与所述备份缓存服务器节点存有相同的缓存数据。根据本发明的一个实施例,所述主缓存服务器群和所述主缓存服务器节点由所述 缓存数据的key而定。根据本发明的一个实施例,所述备份缓存服务器节点与所述主缓存服务器节点具 有对应关系。
本发明还提供一种可靠的数据的缓存方法,所述方法为Sl 在至少两个缓存服务器群的主缓存服务器群的主缓存服务器节点中缓存数 据;S2 将所述数据缓存到备份缓存服务器群的备份缓存服务器节点中。根据本发明的一个实施例,所述步骤Sl中包括SlOl 根据所述数据的key,获取所述数据的主缓存服务器群;S102 根据所述数据的key,在所述主缓存服务器群中获取所述数据待缓存的主 缓存服务器节点;S103 将所述数据和所述key存入到所述获取到的主缓存服务器节点中。根据本发明的一个实施例,所述方法还包括在存入所述数据时,写入所述数据存 入的过期时间。相应于上述数据的缓存方法,本发明还提供一种缓存数据的查询方法,所述 方法为S3:在至少两个缓存服务器群的主缓存服务器群的主缓存服务器节点中查找缓存 数据;S4 若未找到,则在备份缓存服务器群的备份缓存服务器节点中查找缓存数据。根据本发明的一个实施例,所述步骤S3包括S31 根据待查询的缓存数据的key,查找所述缓存数据所存入的主缓存服务器 群;S32:根据所述key,在所述查找到的主缓存服务器群中查找所述缓存数据存入的 主缓存服务器节点;S33:根据所述key,在所述查找到的主缓存服务器节点查询所述缓存数据,若找 到,直接返回查找到的缓存数据。根据本发明的一个实施例,所述步骤S31中,通过所述key的hash code (哈希码) 模除所述缓存服务器群的个数,来查找所述缓存数据存入的主缓存服务器群的群号。根据本发明的一个实施例,所述步骤S32中,通过所述key的hash code模除所述 主缓存服务器群内的缓存服务器节点的数量,来查找所述缓存数据存入的主缓存服务器节 点的节点号。根据本发明的一个实施例,所述方法还包括步骤S5 若在所述备份缓存服务器群的备份缓存服务器节点内查询到所述缓存数据,将查 找到的缓存数据和所述key重新缓存到所述主缓存服务器节点中。根据本发明的一个实施例,所述方法还包括S6 将所述查找到缓存数据中的过期 时间写入到所述主缓存服务器节点中。由上述技术方案可知,本发明的实施例通过主备缓存服务器群中的对应服务器节 点,使每个缓存数据都能缓存到多个服务器群中的对应节点,即使有一个集群的服务器宕 机,还可以通过其他集群对应节点找到该宕机的服务器中的缓存数据,从而保证存入到缓 存服务器中缓存数据的高可靠性,并且这种方案不同于传统的主备服务器,根据不同的缓 存数据的key不同,具有不同的主集群和节点,所以每个集群每个节点都在承担着相对均 衡的业务请求,使缓存服务器得到充分的使用,从而提高网络的服务质量。


图1为一种缓存系统的结构框图;图2为一种改进的缓存系统的结构框图;图3为根据本发明的一个实施例的分布式缓存系统的结构框图;图4为根据本发明的一个实施例的缓存数据的写入方法的主要流程图;图5为根据本发明的一个实施例的缓存数据的查询方法的主要流程图。
具体实施例方式下面将详细描述本发明的具体实施例。应当注意,这里描述的实施例只用于举例 说明,并不用于限制本发明。本发明的构思在于改进缓存服务器和TOB服务器之间的架构,将多个缓存服务器 分成至少两个服务器群,将待缓存的缓存数据分别存入到这至少两个缓存服务器群内的对 应节点中。根据本发明的一个实施例,本发明的分布式缓存系统的架构如图3所示,多个缓 存服务器分成m个服务器群,m> 1,即可以分成两个服务器群或者两个以上的服务器群,而 其中每个服务群中都具有至少一个服务器节点,每个缓存服务器群的缓存服务器节点彼此 之间可以相同,也可以不同,只要每个缓存服务器群之间的缓存服务器节点满足对应关系 皆可。本发明优选为具有相同的缓存服务器节点。图3中所示为m个缓存服务器群,每个 缓存服务器群的节点数均为η个,其中η为正整数,m个缓存服务器群的η个缓存服务器节 点相互之间一一对应,用来存储相同的缓存数据。在上述架构的缓存系统中,多个缓存服务器群中的一个缓存服务器群会作为某待 缓存的缓存数据的主缓存服务器群,然后该主缓存服务器群中的某一个缓存服务器节点会 进一步作为该缓存数据的主缓存服务器节点,同时其它的缓存服务器群就会作为该缓存数 据的备份缓存服务器群,相应于主缓存服务器节点的其它缓存服务器群中的缓存服务器节 点作为缓存数据的备份缓存服务器节点。根据本发明的一个实施例,结合上述缓存架构,本发明的数据的缓存方法为Sl 在至少两个缓存服务器群的主缓存服务器群的主缓存服务器节点中缓存数 据;在该步骤Sl中,在缓存数据时,根据本发明的一个实施例,可以通过如下步骤来 获知该数据待缓存的主缓存服务器群以及其中的主缓存服务器节点,从而将待缓存的数据 存入到获知的服务器节点中SlOl 根据待缓存的数据的key,获取所述缓存数据要写入的主缓存服务器群。这里是将所述缓存服务器群中的一个缓存服务器群作为待缓存的数据的主缓存 服务器群,而其它缓存服务器群作为该缓存数据的备份缓存服务器群;根据本发明的一个实施例,获取主缓存服务器群的方法可以为根据缓存数据的 key来进行运算以获得其要写入的主缓存服务器群的群号。这里所述的key可以为缓存数 据的URL(统一资源定位符),例如,将页面内容缓存到缓存服务器时,将该页面内容对应的 URL地址作为key,根据该URL来获取页面内容所要存入的主缓存服务器群。这里所述的运算方式,可以为将所述key的hash code (哈希码)对缓存服务器群的个数进行模除,也即模除m,取余数从而获得主缓存服务器群的群号。S102 根据待缓存的数据的key,在所述获取到的主缓存服务器群内获取所述待 缓存的数据所要写入的主缓存服务器节点。根据本发明的一个实施例,步骤S102可以具体为根据缓存数据的key来进行运算 以获得其要写入的节点号,这里所述的运算方式,可以为将所述key的hash code对缓存 服务器节点的数量进行模除,也即模除n,取余数从而获得所要写入的主缓存服务器的节点号。S103 将所述待缓存的数据以及所述key存入到所述获取到的主缓存服务器节点中。根据本发明的一个实施例,本发明的将缓存数据写入到所述获取到的主缓存服务 器群的主缓存服务器节点中时还要同时写入该缓存数据的过期时间,以便在一定时间内如 果该缓存数据没有被访问查询就会将该数据释放掉。S2 将所述待缓存的数据以及所述key存入(例如可以是异步写入)到所述备份 缓存服务器群的备份缓存服务器节点中;这里待缓存的数据既存入到主缓存服务器群的主缓存服务器节点,也存入到备份 缓存服务器群内的备份缓存服务器节点中,从而可以使数据同时缓存到多个缓存服务器里 面的多个节点中,即使有一个缓存服务器群中的服务器宕机,在后续的查询中还可以通过 其它的缓存服务器群中的服务器节点找到数据。根据本发明的一个实施例,主缓存服务器群的主缓存服务器节点与备份缓存服务 器群的备份缓存服务器节点具有对应关系,比如说具有相同的节点号,当然本发明的也不 局限于此,可以具有不同的节点号,只要主缓存服务器群的缓存服务器节点与备份缓存服 务器群的缓存服务器节点满足预设的对应规则即可。如图4所示,上述写入方法的一个实施方式为2. a客户端根据待缓存数据的key的hash code模除集群数量,取余数,计算出所 在集群;2. b客户端根据待缓存数据的key的hash code模除节点数量,取余数,计算出所 在节点;2. c客户端将待缓存数据以及所述key放入计算出的节点,并在待缓存的数据里面将过期时间写入;2. d客户端异步将待缓存的数据以及所述key放入到其他集群对应节点;相应于上述数据的缓存方法,本发明还提供一种缓存数据的查询方法,同样地,也 是结合上述缓存架构,该查询方法为在至少两个缓存服务器群的主缓存服务器群的主缓存 服务器节点中查找缓存数据,若未找到,则在备份缓存服务器群的备份缓存服务器节点中 查找缓存数据。根据本发明的一个实施例,该查询方法具体为Sll 根据待查询的缓存数据的key,查找所述缓存数据所存入的主缓存服务器 群;同写入方法一样,可以通过要查询的缓存数据的key的hash code模除所述缓存 服务器群的个数,来查找所述缓存数据存入的主缓存服务器群的群号。
S12:根据所述key,在所述查找到的主缓存服务器群中查找所述缓存数据存入的 主缓存服务器节点;同写入方法一样,可以通过所述key的hash code模除所述缓存服务器群内的缓 存服务器节点的数量,来查找所述数据存入的主缓存服务器节点的节点号。S13:根据所述key,在所述查找到的缓存服务器节点查询所述缓存数据,若找到, 直接返回查找到的数据,否则转入步骤S14中;S14:在所述备份缓存服务器群的备份缓存服务器节点中查询所述所述待查询的 缓存数据,若找到,将查找到的缓存数据放回到步骤S12中所述主缓存服务器群的所述缓 存服务器节点中;由于备份缓存服务器群的备份缓存服务器节点与主缓存服务器节点具有对应关 系,比如说他们具有相同的节点号,从而在主缓存服务器节点找不到缓存数据中时,可以转 而从备份缓存服务器节点中查找,保证了缓存数据的可靠性。根据本发明的一个实施例,在步骤S14中将查找到的缓存数据放回到所述主缓存 服务器群的所述缓存服务器节点中时,还同时将所述查找到缓存数据中的过期时间写入到 所述主缓存服务器群的所述缓存服务器节点中。参见图5,上述查询方法的一个实施方式为3. a客户端根据待查询缓存数据的key的hash code模除集群数量,取余数,计算 出所在集群;3. b客户端根据待查询缓存数据的key的hash code模除节点数量,取余数,计算 出所在节点;3. c客户端将根据待查询缓存数据的key在计算出的节点查询;3. d如果找不到,客户端将查询(如依次查询)其他集群对应节点;3. e找到以后,客户端将查找到的缓存数据放回到所述计算出的节点,过期时间从 该缓存数据的值中获取;根据本发明的缓存数据方法可以大大提高缓存的可靠性,因为每一个缓存数据, 都缓存到了多个集群里面的对应节点,即使有一个集群的服务器宕机,还可以通过其他集 群对应节点找到缓存的数据。不同的待缓存的数据具有不同的主集群和主节点,例如根据 不同的待缓存的数据的key的hash code模除结果不同,可以设置不同的主集群和主节点, 所以每个集群每个节点都在承担着相对均衡的业务请求,使服务器得到充分的使用。虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术语是说明和示 例性、而非限制性的术语。由于本发明能够以多种形式具体实施而不脱离发明的精神或实 质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神 和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权 利要求所涵盖。
权利要求
1.一种分布式缓存系统,包括至少两个缓存服务器群;其中每个缓存服务器群具有至少一个缓存服务器节点;其中所述至少两个缓存服务器群中的一个缓存服务器群以及该一个缓存服务器群中 的一个缓存服务器节点分别作为缓存数据的主缓存服务器群和主缓存服务器节点,其它缓 存服务器群以及其中的一个缓存服务器节点作为所述缓存数据的备份缓存服务器群和备 份缓存服务器节点;其中所述主缓存服务器节点与所述备份缓存服务器节点存有相同的缓存数据。
2.根据权利要求1所述的系统,其中,所述主缓存服务器群和所述主缓存服务器节点 由所述缓存数据的key而定。
3.根据权利要求1或2所述的系统,其中,所述备份缓存服务器节点与所述主缓存服务 器节点具有对应关系。
4.一种数据的缓存方法,其中,包括以下步骤51在至少两个缓存服务器群的主缓存服务器群的主缓存服务器节点中缓存数据;52将所述数据缓存到备份缓存服务器群的备份缓存服务器节点中。
5.根据权利要求4所述的方法,其中,所述步骤Sl中包括5101根据所述数据的key,获取所述数据待缓存的主缓存服务器群;5102根据所述数据的key,在所述主缓存服务器群中获取所述数据待缓存的主缓存 服务器节点;5103将所述数据和所述key缓存到所述获取到的主缓存服务器节点中。
6.根据权利要求4所述的方法,其中,所述方法还包括在缓存所述数据时,写入所述 数据的过期时间。
7.—种查询缓存数据的方法,其中,包括以下步骤53在至少两个缓存服务器群的主缓存服务器群的主缓存服务器节点中查找缓存数据;S4:若未找到,则在备份缓存服务器群的备份缓存服务器节点中查找缓存数据。
8.根据权利要求7所述的方法,其中,所述步骤S3包括531根据待查询的缓存数据的key,查找所述缓存数据所存入的主缓存服务器群;532根据所述key,在所述查找到的主缓存服务器群中查找所述缓存数据存入的主缓 存服务器节点;533根据所述key,在所述查找到的主缓存服务器节点查询所述缓存数据,若找到,直 接返回查找到的缓存数据。
9.根据权利要求8所述的方法,其中,所述步骤S31中,通过所述key的hashcode模 除所述缓存服务器群的个数,来查找所述缓存数据存入的主缓存服务器群的群号。
10.根据权利要求8所述的方法,其中,所述步骤S32中,通过所述key的hashcode模 除所述主缓存服务器群内的缓存服务器节点的数量,来查找所述缓存数据存入的主缓存服 务器节点的节点号。
11.根据权利要求7所述的方法,其中,还包括步骤S5若在所述备份缓存服务器群的备份缓存服务器节点内查询到所述缓存数据,将查找到的缓存数据和所述key重新缓存到所述主缓存服务器节点中。
12.根据权利要求11所述的方法,其中,还包括步骤S6 将所述查找到缓存数据的过期 时间写入到所述主缓存服务器节点中。
全文摘要
本发明公开了一种分布式缓存系统、数据的缓存方法及缓存数据的查询方法。该分布式缓存系统包括至少两个缓存服务器群;其中每个缓存服务器群具有至少一个缓存服务器节点;其中所述至少两个缓存服务器群中的一个缓存服务器群以及该一个缓存服务器群中的一个缓存服务器节点分别作为缓存数据的主缓存服务器群和主缓存服务器节点,其它缓存服务器群以及其中的一个缓存服务器节点作为所述缓存数据的备份缓存服务器群和备份缓存服务器节点;其中所述主缓存服务器节点与所述备份缓存服务器节点存有相同的缓存数据。本发明能够保证在缓存服务器中的缓存数据的高可靠性,并提高网络服务质量。
文档编号H04L29/08GK102006330SQ20101056944
公开日2011年4月6日 申请日期2010年12月1日 优先权日2010年12月1日
发明者王红宝 申请人:北京瑞信在线系统技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1