著录项信息
专利名称 | 分布式缓存系统、数据的缓存方法及缓存数据的查询方法 |
申请号 | CN201010569447.2 | 申请日期 | 2010-12-01 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2011-04-06 | 公开/公告号 | CN102006330A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/08 | IPC分类号 | H;0;4;L;2;9;/;0;8;;;G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 北京瑞信在线系统技术有限公司 | 申请人地址 | 北京市东城区东直门南大街1号来福士中心办公楼10层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京瑞信在线系统技术有限公司 | 当前权利人 | 北京瑞信在线系统技术有限公司 |
发明人 | 王红宝 |
代理机构 | 隆天国际知识产权代理有限公司 | 代理人 | 张浴月;刘文意 |
摘要
本发明公开了一种分布式缓存系统、数据的缓存方法及缓存数据的查询方法。该分布式缓存系统包括:至少两个缓存服务器群;其中每个缓存服务器群具有至少一个缓存服务器节点;其中所述至少两个缓存服务器群中的一个缓存服务器群以及该一个缓存服务器群中的一个缓存服务器节点分别作为缓存数据的主缓存服务器群和主缓存服务器节点,其它缓存服务器群以及其中的一个缓存服务器节点作为所述缓存数据的备份缓存服务器群和备份缓存服务器节点;其中所述主缓存服务器节点与所述备份缓存服务器节点存有相同的缓存数据。本发明能够保证在缓存服务器中的缓存数据的高可靠性,并提高网络服务质量。
1.一种分布式缓存系统,包括:
至少两个缓存服务器群;
其中每个缓存服务器群具有至少一个缓存服务器节点;
其中所述至少两个缓存服务器群中的一个缓存服务器群以及该一个缓存服务器群中的一个缓存服务器节点分别作为缓存数据的主缓存服务器群和主缓存服务器节点,其它缓存服务器群以及其中的一个缓存服务器节点作为所述缓存数据的备份缓存服务器群和备份缓存服务器节点;
其中所述主缓存服务器节点与所述备份缓存服务器节点存有相同的缓存数据;
其中,所述主缓存服务器群根据所述缓存数据的key的哈希码分别对所述至少两个缓存服务器群的个数进行模除取余数而得以确定,以及所述主缓存服务器节点根据所述缓存数据的key的哈希码对所述主缓存服务器群中的缓存服务器节点的个数进行模除取余数而得以确定。
2.根据权利要求1所述的系统,其中,所述备份缓存服务器节点与所述主缓存服务器节点具有对应关系。
3.一种数据的缓存方法,其中,包括以下步骤:
S1:在至少两个缓存服务器群的主缓存服务器群的主缓存服务器节点中缓存数据;
S2:将所述数据缓存到备份缓存服务器群的备份缓存服务器节点中;
其中,所述步骤S1包括:
S101:根据所述数据的key对所述至少两个缓存服务器群的个数进行模除取余数,来获取所述数据待缓存的主缓存服务器群;
S102:根据所述数据的key对所述主缓存服务器群中的缓存服务器节点的个数进行模除取余数,来在所述主缓存服务器群中获取所述数据待缓存的主缓存服务器节点;
S103:将所述数据和所述key缓存到所述获取到的主缓存服务器节点中。
4.根据权利要求3所述的方法,其中,所述方法还包括:在缓存所述数据时,写入所述数据的过期时间。
5.一种查询根据权利要求3或4所述方法所缓存的缓存数据的方法,其中,包括以下步骤:
S3:在至少两个缓存服务器群的主缓存服务器群的主缓存服务器节点中查找缓存数据;
S4:若未找到,则在备份缓存服务器群的备份缓存服务器节点中查找缓存数据;
其中,所述步骤S3包括:
S31:根据待查询的缓存数据的key,通过将所述key的哈希码模除所述缓存服务器群的个数,来查找所述缓存数据所存入的主缓存服务器群;
S32:根据所述key的哈希码模除所述主缓存服务器群内的缓存服务器节点的数量,在所述查找到的主缓存服务器群中查找所述缓存数据存入的主缓存服务器节点;
S33:根据所述key,在所述查找到的主缓存服务器节点查询所述缓存数据,若找到,直接返回查找到的缓存数据。
6.根据权利要求5所述的方法,其中,还包括步骤S5:
若在所述备份缓存服务器群的备份缓存服务器节点内查询到所述缓存数据,将查找到的缓存数据和所述key重新缓存到所述主缓存服务器节点中。
7.根据权利要求6所述的方法,其中,还包括步骤S6:将所述查找到缓存数据的过期时间写入到所述主缓存服务器节点中。
分布式缓存系统、数据的缓存方法及缓存数据的查询方法\n技术领域\n[0001] 本发明涉及互联网数据缓存领域,尤其涉及一种分布式缓存系统、数据的缓存方法及缓存数据的查询方法。\n背景技术\n[0002] 在互联网应用领域中,数据缓存技术至关重要,不仅要保证数据缓存的可扩展性,还要保证数据缓存的性能、可靠性。同类缓存系统大都可以解决扩展性问题,但是无法很好地解决缓存的可靠性,而对于常用数据、会话等信息的缓存,需要很高的可靠性。\n[0003] 一种缓存架构如图1所示,WEB服务器和缓存服务器是一体的,也即是将数据缓存在内存中的,不需要网络通信,这样当WEB服务器需要重新启动时,客户端的缓存数据也丢失了;不仅如此,由于相同的数据要在不同的WEB服务器上面进行缓存,这样命中率(命中率=命中数/[命中数+没有命中数])也比较低。\n[0004] 经过改进的缓存架构是将Cache服务器(缓存服务器)和WEB服务器分离,如图\n2所示,分离后的WEB服务器可以将缓存数据存入到缓存服务器节点中,在查询时从节点中查找缓存数据,如果找不到缓存数据。从数据库查询,然后再将数据写入到这个节点。这样的优势是可缓存的数据量可以通过增加缓存服务器来进行扩展,命中率高,并且重启单台WEB服务器也不会影响缓存服务。\n[0005] 但是以上架构在某台缓存服务器宕机时还是会影响服务,如果缓存的是常用数据库内容信息,会导致瞬间并发量增加,导致数据库宕机;如果缓存的是用户会话数据,则会导致用户会话永久丢失,用户还需要重新登录,WEB服务质量大打折扣。\n发明内容\n[0006] 本发明的实施例旨在提供一种分布式缓存系统及写入缓存数据的方法,以解决在写入缓存数据时的可靠性问题。\n[0007] 为实现上述目的,本发明的实施例提供了一种分布式缓存系统,包括:\n[0008] 至少两个缓存服务器群;\n[0009] 其中每个缓存服务器群具有至少一个缓存服务器节点;\n[0010] 其中所述至少两个缓存服务器群中的一个缓存服务器群以及该一个缓存服务器群中的一个缓存服务器节点分别作为缓存数据的主缓存服务器群和主缓存服务器节点,其它缓存服务器群以及其中的一个缓存服务器节点作为所述缓存数据的备份缓存服务器群和备份缓存服务器节点;\n[0011] 其中所述主缓存服务器节点与所述备份缓存服务器节点存有相同的缓存数据。\n[0012] 根据本发明的一个实施例,所述主缓存服务器群和所述主缓存服务器节点由所述缓存数据的key而定。\n[0013] 根据本发明的一个实施例,所述备份缓存服务器节点与所述主缓存服务器节点具有对应关系。\n[0014] 本发明还提供一种可靠的数据的缓存方法,所述方法为:\n[0015] S1:在至少两个缓存服务器群的主缓存服务器群的主缓存服务器节点中缓存数据;\n[0016] S2:将所述数据缓存到备份缓存服务器群的备份缓存服务器节点中。\n[0017] 根据本发明的一个实施例,所述步骤S1中包括:\n[0018] S101:根据所述数据的key,获取所述数据的主缓存服务器群;\n[0019] S102:根据所述数据的key,在所述主缓存服务器群中获取所述数据待缓存的主缓存服务器节点;\n[0020] S103:将所述数据和所述key存入到所述获取到的主缓存服务器节点中。\n[0021] 根据本发明的一个实施例,所述方法还包括:在存入所述数据时,写入所述数据存入的过期时间。相应于上述数据的缓存方法,本发明还提供一种缓存数据的查询方法,所述方法为:\n[0022] S3:在至少两个缓存服务器群的主缓存服务器群的主缓存服务器节点中查找缓存数据;\n[0023] S4:若未找到,则在备份缓存服务器群的备份缓存服务器节点中查找缓存数据。\n[0024] 根据本发明的一个实施例,所述步骤S3包括:\n[0025] S31:根据待查询的缓存数据的key,查找所述缓存数据所存入的主缓存服务器群;\n[0026] S32:根据所述key,在所述查找到的主缓存服务器群中查找所述缓存数据存入的主缓存服务器节点;\n[0027] S33:根据所述key,在所述查找到的主缓存服务器节点查询所述缓存数据,若找到,直接返回查找到的缓存数据。\n[0028] 根据本发明的一个实施例,所述步骤S31中,通过所述key的hash code(哈希码)模除所述缓存服务器群的个数,来查找所述缓存数据存入的主缓存服务器群的群号。\n[0029] 根据本发明的一个实施例,所述步骤S32中,通过所述key的hash code模除所述主缓存服务器群内的缓存服务器节点的数量,来查找所述缓存数据存入的主缓存服务器节点的节点号。\n[0030] 根据本发明的一个实施例,所述方法还包括步骤S5:\n[0031] 若在所述备份缓存服务器群的备份缓存服务器节点内查询到所述缓存数据,将查找到的缓存数据和所述key重新缓存到所述主缓存服务器节点中。\n[0032] 根据本发明的一个实施例,所述方法还包括S6:将所述查找到缓存数据中的过期时间写入到所述主缓存服务器节点中。\n[0033] 由上述技术方案可知,本发明的实施例通过主备缓存服务器群中的对应服务器节点,使每个缓存数据都能缓存到多个服务器群中的对应节点,即使有一个集群的服务器宕机,还可以通过其他集群对应节点找到该宕机的服务器中的缓存数据,从而保证存入到缓存服务器中缓存数据的高可靠性,并且这种方案不同于传统的主备服务器,根据不同的缓存数据的key不同,具有不同的主集群和节点,所以每个集群每个节点都在承担着相对均衡的业务请求,使缓存服务器得到充分的使用,从而提高网络的服务质量。\n附图说明\n[0034] 图1为一种缓存系统的结构框图;\n[0035] 图2为一种改进的缓存系统的结构框图;\n[0036] 图3为根据本发明的一个实施例的分布式缓存系统的结构框图;\n[0037] 图4为根据本发明的一个实施例的缓存数据的写入方法的主要流程图;\n[0038] 图5为根据本发明的一个实施例的缓存数据的查询方法的主要流程图。\n具体实施方式\n[0039] 下面将详细描述本发明的具体实施例。应当注意,这里描述的实施例只用于举例说明,并不用于限制本发明。\n[0040] 本发明的构思在于改进缓存服务器和WEB服务器之间的架构,将多个缓存服务器分成至少两个服务器群,将待缓存的缓存数据分别存入到这至少两个缓存服务器群内的对应节点中。\n[0041] 根据本发明的一个实施例,本发明的分布式缓存系统的架构如图3所示,多个缓存服务器分成m个服务器群,m>1,即可以分成两个服务器群或者两个以上的服务器群,而其中每个服务群中都具有至少一个服务器节点,每个缓存服务器群的缓存服务器节点彼此之间可以相同,也可以不同,只要每个缓存服务器群之间的缓存服务器节点满足对应关系皆可。本发明优选为具有相同的缓存服务器节点。图3中所示为m个缓存服务器群,每个缓存服务器群的节点数均为n个,其中n为正整数,m个缓存服务器群的n个缓存服务器节点相互之间一一对应,用来存储相同的缓存数据。\n[0042] 在上述架构的缓存系统中,多个缓存服务器群中的一个缓存服务器群会作为某待缓存的缓存数据的主缓存服务器群,然后该主缓存服务器群中的某一个缓存服务器节点会进一步作为该缓存数据的主缓存服务器节点,同时其它的缓存服务器群就会作为该缓存数据的备份缓存服务器群,相应于主缓存服务器节点的其它缓存服务器群中的缓存服务器节点作为缓存数据的备份缓存服务器节点。\n[0043] 根据本发明的一个实施例,结合上述缓存架构,本发明的数据的缓存方法为:\n[0044] S1:在至少两个缓存服务器群的主缓存服务器群的主缓存服务器节点中缓存数据;\n[0045] 在该步骤S1中,在缓存数据时,根据本发明的一个实施例,可以通过如下步骤来获知该数据待缓存的主缓存服务器群以及其中的主缓存服务器节点,从而将待缓存的数据存入到获知的服务器节点中:\n[0046] S101:根据待缓存的数据的key,获取所述缓存数据要写入的主缓存服务器群。\n[0047] 这里是将所述缓存服务器群中的一个缓存服务器群作为待缓存的数据的主缓存服务器群,而其它缓存服务器群作为该缓存数据的备份缓存服务器群;\n[0048] 根据本发明的一个实施例,获取主缓存服务器群的方法可以为根据缓存数据的key来进行运算以获得其要写入的主缓存服务器群的群号。这里所述的key可以为缓存数据的URL(统一资源定位符),例如,将页面内容缓存到缓存服务器时,将该页面内容对应的URL地址作为key,根据该URL来获取页面内容所要存入的主缓存服务器群。\n[0049] 这里所述的运算方式,可以为将所述key的hash code(哈希码)对缓存服务器群的个数进行模除,也即模除m,取余数从而获得主缓存服务器群的群号。\n[0050] S102:根据待缓存的数据的key,在所述获取到的主缓存服务器群内获取所述待缓存的数据所要写入的主缓存服务器节点。\n[0051] 根据本发明的一个实施例,步骤S102可以具体为根据缓存数据的key来进行运算以获得其要写入的节点号,这里所述的运算方式,可以为将所述key的hash code对缓存服务器节点的数量进行模除,也即模除n,取余数从而获得所要写入的主缓存服务器的节点号。\n[0052] S103:将所述待缓存的数据以及所述key存入到所述获取到的主缓存服务器节点中。\n[0053] 根据本发明的一个实施例,本发明的将缓存数据写入到所述获取到的主缓存服务器群的主缓存服务器节点中时还要同时写入该缓存数据的过期时间,以便在一定时间内如果该缓存数据没有被访问查询就会将该数据释放掉。\n[0054] S2:将所述待缓存的数据以及所述key存入(例如可以是异步写入)到所述备份缓存服务器群的备份缓存服务器节点中;\n[0055] 这里待缓存的数据既存入到主缓存服务器群的主缓存服务器节点,也存入到备份缓存服务器群内的备份缓存服务器节点中,从而可以使数据同时缓存到多个缓存服务器里面的多个节点中,即使有一个缓存服务器群中的服务器宕机,在后续的查询中还可以通过其它的缓存服务器群中的服务器节点找到数据。\n[0056] 根据本发明的一个实施例,主缓存服务器群的主缓存服务器节点与备份缓存服务器群的备份缓存服务器节点具有对应关系,比如说具有相同的节点号,当然本发明的也不局限于此,可以具有不同的节点号,只要主缓存服务器群的缓存服务器节点与备份缓存服务器群的缓存服务器节点满足预设的对应规则即可。\n[0057] 如图4所示,上述写入方法的一个实施方式为:\n[0058] 2.a客户端根据待缓存数据的key的hash code模除集群数量,取余数,计算出所在集群;\n[0059] 2.b客户端根据待缓存数据的key的hash code模除节点数量,取余数,计算出所在节点;\n[0060] 2.c客户端将待缓存数据以及所述key\n[0061] 放入计算出的节点,并在待缓存的数据里面将过期时间写入;\n[0062] 2.d客户端异步将待缓存的数据以及所述key放入到其他集群对应节点;\n[0063] 相应于上述数据的缓存方法,本发明还提供一种缓存数据的查询方法,同样地,也是结合上述缓存架构,该查询方法为在至少两个缓存服务器群的主缓存服务器群的主缓存服务器节点中查找缓存数据,若未找到,则在备份缓存服务器群的备份缓存服务器节点中查找缓存数据。\n[0064] 根据本发明的一个实施例,该查询方法具体为:\n[0065] S11:根据待查询的缓存数据的key,查找所述缓存数据所存入的主缓存服务器群;\n[0066] 同写入方法一样,可以通过要查询的缓存数据的key的hash code模除所述缓存服务器群的个数,来查找所述缓存数据存入的主缓存服务器群的群号。\n[0067] S12:根据所述key,在所述查找到的主缓存服务器群中查找所述缓存数据存入的主缓存服务器节点;\n[0068] 同写入方法一样,可以通过所述key的hash code模除所述缓存服务器群内的缓存服务器节点的数量,来查找所述数据存入的主缓存服务器节点的节点号。\n[0069] S13:根据所述key,在所述查找到的缓存服务器节点查询所述缓存数据,若找到,直接返回查找到的数据,否则转入步骤S14中;\n[0070] S14:在所述备份缓存服务器群的备份缓存服务器节点中查询所述所述待查询的缓存数据,若找到,将查找到的缓存数据放回到步骤S12中所述主缓存服务器群的所述缓存服务器节点中;\n[0071] 由于备份缓存服务器群的备份缓存服务器节点与主缓存服务器节点具有对应关系,比如说他们具有相同的节点号,从而在主缓存服务器节点找不到缓存数据中时,可以转而从备份缓存服务器节点中查找,保证了缓存数据的可靠性。\n[0072] 根据本发明的一个实施例,在步骤S14中将查找到的缓存数据放回到所述主缓存服务器群的所述缓存服务器节点中时,还同时将所述查找到缓存数据中的过期时间写入到所述主缓存服务器群的所述缓存服务器节点中。\n[0073] 参见图5,上述查询方法的一个实施方式为:\n[0074] 3.a客户端根据待查询缓存数据的key的hash code模除集群数量,取余数,计算出所在集群;\n[0075] 3.b客户端根据待查询缓存数据的key的hash code模除节点数量,取余数,计算出所在节点;\n[0076] 3.c客户端将根据待查询缓存数据的key在计算出的节点查询;\n[0077] 3.d如果找不到,客户端将查询(如依次查询)其他集群对应节点;\n[0078] 3.e找到以后,客户端将查找到的缓存数据放回到所述计算出的节点,过期时间从该缓存数据的值中获取;\n[0079] 根据本发明的缓存数据方法可以大大提高缓存的可靠性,因为每一个缓存数据,都缓存到了多个集群里面的对应节点,即使有一个集群的服务器宕机,还可以通过其他集群对应节点找到缓存的数据。不同的待缓存的数据具有不同的主集群和主节点,例如根据不同的待缓存的数据的key的hash code模除结果不同,可以设置不同的主集群和主节点,所以每个集群每个节点都在承担着相对均衡的业务请求,使服务器得到充分的使用。\n[0080] 虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术语是说明和示例性、而非限制性的术语。由于本发明能够以多种形式具体实施而不脱离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。
法律信息
- 2017-01-18
未缴年费专利权终止
IPC(主分类): H04L 29/08
专利号: ZL 201010569447.2
申请日: 2010.12.01
授权公告日: 2013.06.12
- 2013-06-12
- 2011-05-25
实质审查的生效
IPC(主分类): H04L 29/08
专利申请号: 201010569447.2
申请日: 2010.12.01
- 2011-04-06
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-03-10
|
2009-10-13
| | |
2
| |
2010-02-10
|
2009-08-26
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |