一种基于改进一致性哈希分布式缓存的方法和系统的制作方法
【技术领域】
[0001]本发明属于信息系统领域,具体涉及一种基于改进一致性哈希分布式缓存的方法和系统。
【背景技术】
[0002]随着互联网特别是移动互联网的发展,用户量越来越大,而要求的响应速度也是越来越快,这样为了加快访问速度,一个比较的方式就是在信息系统中使用缓存。缓存技术存储热点数据,拉近集群对象数据与应用之间的距离,是加速数据访问、提供数据分布式共享的关键技术,该技术对于提高系统的扩展能力、保障系统可靠性具有非常重要的作用。
[0003]分布式缓存大量存在于信息系统当中,当前分布式缓存系统主要有两种:
[0004]一种是各个服务器缓存的内容相同,客户端访问缓存比较简单,访问任何一台机器即可,但是当一台服务器上的缓存数据发生变化时,需要将缓存数据同步到其他所有机器上,这样虽然提高了系统的可靠性,但造成了系统缓存资源的浪费,当机器增多时,数据同步时间也会增加,其代表是开源的Memcache。
[0005]另一种是以一致性哈希(Consistent Hashing)技术为代表,一致性哈希是将每个对象映射到圆环边上的一个点,系统再将可用的节点机器映射到圆环的不同位置。查找某个对象对应的机器时,需要用一致哈希算法计算得到对象对应圆环边上位置,沿着圆环边上顺时针查找直到遇到某个节点机器,这台机器即为对象应该保存的位置。其优势是缓存数据不需要复制。但是某台服务器发生故障时,会丢失该部分缓存数据,对此可以采用主备式一致性哈希分布式缓存方法,但是系统在大量时间里会有一半的服务器为静默状态,浪费了大量资源。
【发明内容】
[0006]本发明要解决的技术问题是,当前分布式缓存系统不是可靠性和可用性较差,就是机器堆积造成系统资源浪费。
[0007]根据本发明提出一种基于改进一致性哈希分布式缓存的系统,包括:
[0008]多个节点服务器,每个节点服务器包括主缓存区和副本缓存区,其中:
[0009]所述主缓存区用于缓存根据一致性哈希算法该节点服务器上用户写入或者需要访问的数据;
[0010]所述副本缓存区用于缓存根据一致性哈希算法,所有节点服务器构成的哈希环上的上一节点服务器的主缓存区的数据。
[0011]进一步,任一节点服务器的所述主缓存区数据发生变化,将发生变化的数据复制到哈希环上的下一节点服务器的副本缓存区。
[0012]进一步,当某个节点服务器发生故障或者需要删除时,其哈希环上的下一节点服务器需要合并主副缓存区的数据作为主缓存区数据,复制到哈希环上的下下节点服务器的副本缓存区;
[0013]其哈希环上的上一节点服务器的主缓存区数据复制到其下一节点服务器的副本缓存区。
[0014]进一步,当新增某个节点服务器时,在新增后的哈希环上,该新增节点服务器的上一节点服务器的主缓存区数据复制到该节点服务器的副本缓存区;下一节点服务器的主缓存区中现在访问该新增节点服务器的数据复制到该新增节点服务器的主缓存区中;
[0015]下一节点服务器的主缓存区数据删除已缓存在新增节点服务器的主缓存区的数据。
[0016]进一步,将该新增节点服务器的主缓存区数据复制到下一节点服务器的副本缓存区作为下一节点服务器的副本缓存区数据;或者
[0017]将下一节点服务器原有缓存在主缓存区的数据删除现在缓存在下一节点服务器的主缓存区的数据,作为下一节点服务器的副本缓存区数据。
[0018]进一步,将所述下一节点服务器的主缓存区数据复制下下节点服务器的副本缓存区,作为下下节点服务器的副本缓存区数据;或者
[0019]将原有下下节点服务器的副本缓存区的数据删除现在新增节点服务器的主缓存区数据,作为下下节点服务器的副本缓存区数据。
[0020]根据本发明一方面,提出一种基于改进一致性哈希分布式缓存的方法,包括:
[0021]将缓存数据缓存在多个节点服务器,每个节点服务器包括主缓存区和副本缓存区;
[0022]在每个节点服务器的所述主缓存区缓存根据一致性哈希算法该节点服务器上用户写入或者需要访问的数据;
[0023]在每个节点服务器的所述副本缓存区缓存根据一致性哈希算法,所有节点服务器构成的哈希环上的上一节点服务器的主缓存区的数据。
[0024]进一步,当任一节点服务器的所述主缓存区数据发生变化时,将发生变化的数据复制到哈希环上的下一节点服务器的副本缓存区。
[0025]进一步,当某个节点服务器发生故障或者需要删除时,其哈希环上的下一节点服务器需要合并主副缓存区的数据作为主缓存区数据,复制到哈希环上的下下节点服务器的副本缓存区;
[0026]其哈希环上的上一节点服务器的主缓存区数据复制到其下一节点服务器的副本缓存区。
[0027]进一步,当新增某个节点服务器时,在新增后的哈希环上,该新增节点服务器的上一节点服务器的主缓存区数据复制到该节点服务器的副本缓存区;下一节点服务器的主缓存区中现在访问该新增节点服务器的数据复制到该新增节点服务器的主缓存区中;
[0028]下一节点服务器的主缓存区数据删除已缓存在新增节点服务器的主缓存区的数据。
[0029]进一步,将该新增节点服务器的主缓存区数据复制到下一节点服务器的副本缓存区作为下一节点服务器的副本缓存区数据;或者
[0030]将下一节点服务器原有缓存在主缓存区的数据删除现在缓存在下一节点服务器的主缓存区的数据,作为下一节点服务器的副本缓存区数据。
[0031]进一步,将所述下一节点服务器的主缓存区数据复制下下节点服务器的副本缓存区,作为下下节点服务器的副本缓存区数据;或者
[0032]将原有下下节点服务器的副本缓存区的数据删除现在新增节点服务器的主缓存区数据,作为下下节点服务器的副本缓存区数据。
[0033]本发明中,每个节点服务器既缓存了本节点服务器的数据,又缓存了上一节点服务器的数据,因此,可以有效的提高系统的可靠性和可用性,又可以避免浪费资源,减少缓存数据的同步次数。
[0034]通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
【附图说明】
[0035]构成说明书的一部分的附图描述了本发明的实施例,并且连同说明书一起用于解释本发明的原理。
[0036]参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
[0037]图1为一种基于改进一致性哈希分布式缓存的系统的结构示意图。
[0038]图2为哈希环上某节点服务器有故障或者需要删除的实施例的示意图。
[0039]图3为在哈希环上新增某一节点服务器的实施例的示意图。
[0040]图4为一种基于改进一致性哈希分布式缓存的方法的实施例的流程图。
【具体实施方式】
[0041]现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
[0042]同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
[0043]以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
[0044]对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
[0045]在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
[0046]应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
[0047]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详