法律状态公告日
法律状态信息
法律状态
2019-02-26
授权
授权
2016-06-08
实质审查的生效 IPC(主分类):H04L29/08 申请日:20141020
实质审查的生效
2016-04-20
公开
公开
技术领域
本发明属于信息系统领域,具体涉及一种基于改进一致性哈希分 布式缓存的方法和系统。
背景技术
随着互联网特别是移动互联网的发展,用户量越来越大,而要求 的响应速度也是越来越快,这样为了加快访问速度,一个比较的方式 就是在信息系统中使用缓存。缓存技术存储热点数据,拉近集群对象 数据与应用之间的距离,是加速数据访问、提供数据分布式共享的关 键技术,该技术对于提高系统的扩展能力、保障系统可靠性具有非常 重要的作用。
分布式缓存大量存在于信息系统当中,当前分布式缓存系统主要 有两种:
一种是各个服务器缓存的内容相同,客户端访问缓存比较简单, 访问任何一台机器即可,但是当一台服务器上的缓存数据发生变化时, 需要将缓存数据同步到其他所有机器上,这样虽然提高了系统的可靠 性,但造成了系统缓存资源的浪费,当机器增多时,数据同步时间也 会增加,其代表是开源的Memcache。
另一种是以一致性哈希(ConsistentHashing)技术为代表,一 致性哈希是将每个对象映射到圆环边上的一个点,系统再将可用的节 点机器映射到圆环的不同位置。查找某个对象对应的机器时,需要用 一致哈希算法计算得到对象对应圆环边上位置,沿着圆环边上顺时针 查找直到遇到某个节点机器,这台机器即为对象应该保存的位置。其 优势是缓存数据不需要复制。但是某台服务器发生故障时,会丢失该 部分缓存数据,对此可以采用主备式一致性哈希分布式缓存方法,但 是系统在大量时间里会有一半的服务器为静默状态,浪费了大量资源。
发明内容
本发明要解决的技术问题是,当前分布式缓存系统不是可靠性和 可用性较差,就是机器堆积造成系统资源浪费。
根据本发明提出一种基于改进一致性哈希分布式缓存的系统,包 括:
多个节点服务器,每个节点服务器包括主缓存区和副本缓存区, 其中:
所述主缓存区用于缓存根据一致性哈希算法该节点服务器上用 户写入或者需要访问的数据;
所述副本缓存区用于缓存根据一致性哈希算法,所有节点服务器 构成的哈希环上的上一节点服务器的主缓存区的数据。
进一步,任一节点服务器的所述主缓存区数据发生变化,将发生 变化的数据复制到哈希环上的下一节点服务器的副本缓存区。
进一步,当某个节点服务器发生故障或者需要删除时,其哈希环 上的下一节点服务器需要合并主副缓存区的数据作为主缓存区数据, 复制到哈希环上的下下节点服务器的副本缓存区;
其哈希环上的上一节点服务器的主缓存区数据复制到其下一节 点服务器的副本缓存区。
进一步,当新增某个节点服务器时,在新增后的哈希环上,该新 增节点服务器的上一节点服务器的主缓存区数据复制到该节点服务器 的副本缓存区;下一节点服务器的主缓存区中现在访问该新增节点服 务器的数据复制到该新增节点服务器的主缓存区中;
下一节点服务器的主缓存区数据删除已缓存在新增节点服务器 的主缓存区的数据。
进一步,将该新增节点服务器的主缓存区数据复制到下一节点服 务器的副本缓存区作为下一节点服务器的副本缓存区数据;或者
将下一节点服务器原有缓存在主缓存区的数据删除现在缓存在 下一节点服务器的主缓存区的数据,作为下一节点服务器的副本缓存 区数据。
进一步,将所述下一节点服务器的主缓存区数据复制下下节点服 务器的副本缓存区,作为下下节点服务器的副本缓存区数据;或者
将原有下下节点服务器的副本缓存区的数据删除现在新增节点 服务器的主缓存区数据,作为下下节点服务器的副本缓存区数据。
根据本发明一方面,提出一种基于改进一致性哈希分布式缓存的 方法,包括:
将缓存数据缓存在多个节点服务器,每个节点服务器包括主缓存 区和副本缓存区;
在每个节点服务器的所述主缓存区缓存根据一致性哈希算法该 节点服务器上用户写入或者需要访问的数据;
在每个节点服务器的所述副本缓存区缓存根据一致性哈希算法, 所有节点服务器构成的哈希环上的上一节点服务器的主缓存区的数据。
进一步,当任一节点服务器的所述主缓存区数据发生变化时,将 发生变化的数据复制到哈希环上的下一节点服务器的副本缓存区。
进一步,当某个节点服务器发生故障或者需要删除时,其哈希环 上的下一节点服务器需要合并主副缓存区的数据作为主缓存区数据, 复制到哈希环上的下下节点服务器的副本缓存区;
其哈希环上的上一节点服务器的主缓存区数据复制到其下一节 点服务器的副本缓存区。
进一步,当新增某个节点服务器时,在新增后的哈希环上,该新 增节点服务器的上一节点服务器的主缓存区数据复制到该节点服务器 的副本缓存区;下一节点服务器的主缓存区中现在访问该新增节点服 务器的数据复制到该新增节点服务器的主缓存区中;
下一节点服务器的主缓存区数据删除已缓存在新增节点服务器 的主缓存区的数据。
进一步,将该新增节点服务器的主缓存区数据复制到下一节点服 务器的副本缓存区作为下一节点服务器的副本缓存区数据;或者
将下一节点服务器原有缓存在主缓存区的数据删除现在缓存在 下一节点服务器的主缓存区的数据,作为下一节点服务器的副本缓存 区数据。
进一步,将所述下一节点服务器的主缓存区数据复制下下节点服 务器的副本缓存区,作为下下节点服务器的副本缓存区数据;或者
将原有下下节点服务器的副本缓存区的数据删除现在新增节点 服务器的主缓存区数据,作为下下节点服务器的副本缓存区数据。
本发明中,每个节点服务器既缓存了本节点服务器的数据,又缓 存了上一节点服务器的数据,因此,可以有效的提高系统的可靠性和 可用性,又可以避免浪费资源,减少缓存数据的同步次数。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明 的其它特征及其优点将会变得清楚。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同说 明书一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明, 其中:
图1为一种基于改进一致性哈希分布式缓存的系统的结构示意图。
图2为哈希环上某节点服务器有故障或者需要删除的实施例的示 意图。
图3为在哈希环上新增某一节点服务器的实施例的示意图。
图4为一种基于改进一致性哈希分布式缓存的方法的实施例的流 程图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意 到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相 对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺 寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决 不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详 细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说 明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是 示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具 有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此, 一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行 进一步讨论。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具 体实施例,并参照附图,对本发明进一步详细说明。
本发明的目的是针对原始一致性哈希缓存系统存在某个节点服 务器发生故障或者新增一个节点服务器时,会造成部分用户缓存找不 到,从而延迟了系统响应时间,而基于主备模式,又会在大部分时间 中有一半的设备处于静默状态,造成了资源的浪费。因此,本发明在 一致性哈希基础上,通过将每台服务器上的缓存划分为两部分,一部 分为主缓存,另一部分为副本缓存,这样既吸取两类缓存的优势,又 避免了两类缓存的缺点,可以有效的提高系统的可靠性和可用性,又 可以避免浪费资源,减少缓存数据的同步次数。
图1为一种基于改进一致性哈希分布式缓存的系统的结构示意图。 该系统包括:多个节点服务器。即,第1个节点服务器、第2个节点 服务器、……、第i个节点服务器、……、第n个节点服务器。
每个节点服务器包括主缓存区和副本缓存区,其中:
所述主缓存区用于缓存根据一致性哈希算法该节点服务器上用 户写入或者需要访问的数据。即,所述主缓存区用于缓存本节点服务 器的数据。
所述副本缓存区用于缓存根据一致性哈希算法,所有节点服务器 构成的哈希环上的上一节点服务器的主缓存区的数据。
例如,第2个节点服务器的主缓存区用于缓存第2个节点服务器 的数据,其副本缓存区用于缓存第1个节点服务器的主缓存区的数据。
对于共有n个节点服务器的系统,则第1个节点服务器的主缓存 区用于缓存第n个节点服务器的主缓存区的数据。
在该实施例中,每个节点服务器既缓存了本节点服务器的数据, 又缓存了上一节点服务器的数据,因此,可以有效的提高系统的可靠 性和可用性,又可以避免浪费资源,减少缓存数据的同步次数。
其中,任一节点服务器的所述主缓存区数据发生变化,将发生变 化的数据复制到哈希环上的下一节点服务器的副本缓存区。
在某一节点服务器发生故障或者对系统进行扩容新增节点服务 器时,对其位置的上下节点服务器按照规则复制主缓存区和副本缓存 的区数据。
在本发明的实施例中,当某个节点服务器发生故障或者需要删除 时,其哈希环上的下一节点服务器需要合并主副缓存区的数据作为主 缓存区数据,复制到哈希环上的下下节点服务器的副本缓存区;其哈 希环上的上一节点服务器的主缓存区数据复制到其下一节点服务器的 副本缓存区。
图2为哈希环上某节点服务器有故障或者需要删除的实施例的示 意图。
若负载均衡或者集群服务器检查或发现到第i个节点服务器发生 故障或者需要删除;
则根据一致性哈希算法,用户访问第i+1个节点服务器;
第i+1个节点服务器将自己的副本缓存区数据和主缓存区数据合 并,作为主缓存区数据,复制到第i+2个节点服务器的副本缓存区;
将第i-1个节点服务器的主缓存区数据复制到第i+1个节点服务 器的副本缓存区。
在本发明的实施例中,当新增某个节点服务器时,在新增后的哈 希环上,该新增节点服务器的上一节点服务器的主缓存区数据复制到 该节点服务器的副本缓存区;下一节点服务器的主缓存区中现在访问 该新增节点服务器的数据复制到该新增节点服务器的主缓存区中;下 一节点服务器的主缓存区数据删除已缓存在新增节点服务器的主缓存 区的数据。
其中,将该新增节点服务器的主缓存区数据复制到下一节点服务 器的副本缓存区作为下一节点服务器的副本缓存区数据;或者
将下一节点服务器原有缓存在主缓存区的数据删除现在缓存在 下一节点服务器的主缓存区的数据,作为下一节点服务器的副本缓存 区数据。
其中,将所述下一节点服务器的主缓存区数据复制下下节点服务 器的副本缓存区,作为下下节点服务器的副本缓存区数据;或者
将原有下下节点服务器的副本缓存区的数据删除现在新增节点 服务器的主缓存区数据,作为下下节点服务器的副本缓存区数据。
图3为在哈希环上新增某一节点服务器的实施例的示意图。
若负载均衡或集群服务器检查或者设置到新增了第k个节点服 务器,插入到第i个节点服务器之前;
则根据一致性哈希算法,原先访问第i个节点服务器的部分用户 会访问到第k个节点服务器;
此时通知原先第i个节点服务器,将其主缓存区数据中根据新加 入节点服务器计算后的现在访问第k个节点服务器的数据复制到现在 的第k个节点服务器的主缓存区,将第i-1个节点服务器的副本缓存 区数据复制到第k个节点服务器的副本缓存区;
将原先第i个节点服务器中主缓存区数据中,删去原先访问第i 个节点服务器现在访问第k个节点服务器的缓存数据,将现在第k个 节点服务器的主缓存区数据复制到原先第i个节点服务器的副本缓存 区,或者,根据算法将第i个节点服务器原有缓存在主缓存区的数据 删除现在缓存在第i个节点服务器的主缓存区的数据。
将现在第i个节点服务器主缓存区数据复制到第i+1个节点服务 器的副本缓存区,或者,将原有第i+1个节点服务器的副本缓存区的 数据删除现在新增第k个节点服务器的主缓存区数据。
图4为一种基于改进一致性哈希分布式缓存的方法的实施例的流 程图。该方法包括:
在步骤410,将缓存数据缓存在多个节点服务器,每个节点服务 器包括主缓存区和副本缓存区。
在步骤420,在每个节点服务器的所述主缓存区缓存根据一致性 哈希算法该节点服务器上用户写入或者需要访问的数据。
在步骤430,在每个节点服务器的所述副本缓存区缓存根据一致 性哈希算法,所有节点服务器构成的哈希环上的上一节点服务器的主 缓存区的数据。
例如,第2个节点服务器的主缓存区用于缓存第2个节点服务器 的数据,其副本缓存区用于缓存第1个节点服务器的主缓存区的数据。
对于共有n个节点服务器的系统,则第1个节点服务器的主缓存 区用于缓存第n个节点服务器的主缓存区的数据。
在该实施例中,每个节点服务器既缓存了本节点的数据,又缓存 了上一节点服务器的数据,因此,可以有效的提高系统的可靠性和可 用性,又可以避免浪费资源,减少缓存数据的同步次数。
其中,当任一节点服务器的所述主缓存区数据发生变化时,将发 生变化的数据复制到哈希环上的下一节点服务器的副本缓存区。
在某一节点服务器发生故障或者对系统进行扩容新增节点服务 器时,对其位置的上下节点服务器按照规则复制主缓存区和副本缓存 的区数据。
在本发明的实施例中,当某个节点服务器发生故障或者需要删除 时,其哈希环上的下一节点服务器需要合并主副缓存区的数据作为主 缓存区数据,复制到哈希环上的下下节点服务器的副本缓存区;
其哈希环上的上一节点服务器的主缓存区数据复制到其下一节 点服务器的副本缓存区。
下面将通过一个具体实施例,对哈希环上某节点服务器有故障或 者需要删除的情况进行详细说明。
若负载均衡或者集群服务器检查或发现到第i个节点服务器发生 故障或者需要删除;
则根据一致性哈希算法,用户访问第i+1个节点服务器;
第i+1个节点服务器将自己的副本缓存区数据和主缓存区数据合 并,作为主缓存区数据,复制到第i+2个节点服务器的副本缓存区;
将第i-1个节点服务器的主缓存区数据复制到第i+1个节点服务 器的副本缓存区。
在本发明的实施例中,当新增某个节点服务器时,在新增后的哈 希环上,该新增节点服务器的上一节点服务器的主缓存区数据复制到 该节点服务器的副本缓存区;下一节点服务器的主缓存区中现在访问 该新增节点服务器的数据复制到该新增节点服务器的主缓存区中;下 一节点服务器的主缓存区数据删除已缓存在新增节点服务器的主缓存 区的数据。
其中,将该新增节点服务器的主缓存区数据复制到下一节点服务 器的副本缓存区作为下一节点服务器的副本缓存区数据;或者
将下一节点服务器原有缓存在主缓存区的数据删除现在缓存在 下一节点服务器的主缓存区的数据,作为下一节点服务器的副本缓存 区数据。
其中,将所述下一节点服务器的主缓存区数据复制下下节点服务 器的副本缓存区,作为下下节点服务器的副本缓存区数据;或者
将原有下下节点服务器的副本缓存区的数据删除现在新增节点 服务器的主缓存区数据,作为下下节点服务器的副本缓存区数据。
下面将通过一个具体实施例,对在哈希环上新增某一节点服务器 的情况进行详细说明。
若负载均衡或集群服务器检查或者设置到新增了第k个节点服 务器,插入到第i个节点服务器之前;
则根据一致性哈希算法,原先访问第i个节点服务器的部分用户 会访问到第k个节点服务器;
此时通知原先第i个节点服务器,将其主缓存区数据中根据新加 入节点服务器计算后的现在访问第k个节点服务器的数据复制到现在 的第k个节点服务器的主缓存区,将第i-1个节点服务器的副本缓存 区数据复制到第k个节点服务器的副本缓存区;
将原先第i个节点服务器中主缓存区数据中,删去原先访问第i 个节点服务器现在访问第k个节点服务器的缓存数据,将现在第k个 节点服务器的主缓存区数据复制到原先第i个节点服务器的副本缓存 区,或者,根据算法将第i个节点服务器原有缓存在主缓存区的数据 删除现在缓存在第i个节点服务器的主缓存区的数据。
将现在第i个节点服务器主缓存区数据复制到第i+1个节点服务 器的副本缓存区,或者,将原有第i+1个节点服务器的副本缓存区的 数据删除现在新增第k个节点服务器的主缓存区数据。
本发明适用于所有需要通过缓存来加快系统响应的分布式信息 系统,可降低系统硬件投资,提高现有缓存系统的可靠性、可用性和 响应速度,节省系统成本,在大型系统工程建设中效益尤为显著。
至此,已经详细描述了本发明。为了避免遮蔽本发明的构思,没 有描述本领域所公知的一些细节。本领域技术人员根据上面的描述, 完全可以明白如何实施这里公开的技术方案。
可能以许多方式来实现本发明的方法以及装置。例如,可通过软 件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方 法以及装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本 发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别 说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质 中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。 因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介 质。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明, 但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不 是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离 本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范 围由所附权利要求来限定。
机译: 一种基于纠错码的加密系统的性能改进方法,通过对一部分编码数据进行打孔或重复处理,使其比现有的加密系统具有更强的外部攻击性能,并提供了一种装置
机译: “一种改进的碳酸化反应器系统和一种基于碱的煤浸出过程中的废碱再生方法”
机译: 一种用于改进与基于软件的近场数据处理(NDP)技术的软件基于关系数据库查询的处理的系统和方法