一种基于一致性hash的网络cache设计方法

文档序号:9290129阅读:209来源:国知局
一种基于一致性hash的网络cache设计方法
【技术领域】
[0001]本发明涉及计算机网络技术领域,具体涉及一种基于一致性hash的网络cache设计方法,用于服务器集群的缓冲共享和缓存均衡,主要加速大规模数据访问速度和消除单节点缓存失效的影响。本发明可以有效提高服务器集群的1性能,不但提供统一存储空间,并能将缓存相对均匀的分布到各服务器节点中。
【背景技术】
[0002]传统的服务器集群中,为了实现负载均衡,将N台服务器进行hash取模,将键值为X的数据请求分配或者路由到hash (X) mod N对应的服务器中。
[0003]该算法十分简单,但是若增加了服务器的数量,将导致原来的缓存数据进行重新映射,造成服务器集群大量读取硬盘数据的情形,造成很大的系统负载。因此采用传统方式的缓存设计方案无法对现有的集群进行动态扩容。
[0004]若服务器集群中存在单服务器节点失效,那么移除该节点也会引起缓存数据和服务器不匹配,因此导致了缓存数据资源剧烈变化,影响了系统的整体性能。

【发明内容】

[0005]本发明要解决的技术问题是:鉴于上述问题,本发明的主要目的在于,提供一种基于一致性hash算法的网络cache设计方法,该方法可以用于服务器集群的缓冲共享和缓存均衡,主要加速大规模数据访问速度和消除单节点缓存失效的影响。
[0006]本发明所采用的技术方案为:
一种基于一致性hash的网络cache设计方法,首先将服务器集群的缓存集中,放入统一的资源池内,资源池内的所有资源可以被任一资源调度使用,采用NUMA进行缓存的管理;将hash值放入一个2m的环形空间中,将单台服务器也看成对象进行hash计算放入hash环中;然后将数据块通过hash算法计算出对应的key值,将该值放入到hash空间中。
[0007]若某节点宕机,该节点失效,原来指向该节点的数据块重新缓存到另一节点中,其他数据块仍然缓存到原来的节点中;
若服务器集群需要扩容或者替代失效节点,原来指向失效节点的数据块重新缓存到新增加节点中,其他数据块仍然缓存到原来的节点中。
[0008]所述方法将物理节点通过算法得到虚拟节点,并将虚拟节点映射到hash空间。
[0009]所述虚拟节点具体设置过程为:将其中的一个Node节点,通过hash算法得到Key值命名,然后将2m_key的值作为新的key值命名,虚拟出两个节点,两个节点时在hash空间中均勾分布;同理,其他节点也是相同计算,将获得的虚拟节点映射到hash空间中。
[0010]本发明的有益效果为:
本发明技术用于服务器集群的缓冲共享和缓存均衡,能够加速大规模数据访问速度和消除单节点缓存失效的影响,可以有效提高服务器集群的1性能,不但提供统一存储空间,并能将缓存相对均匀的分布到各服务器节点中。
【附图说明】
[0011 ] 图1为服务器集群缓存资源组建缓存池示意图;
图2为数据块通过Hash映射到统一空间示意图;
图3为服务器通过Hash映射到统一空间示意图;
图4为删除服务器操作示意图;
图5为添加服务器操作示意图;
图6为未添加虚拟服务器时数据块分布示意图;
图7为添加虚拟服务器后数据块分布示意图;
图8为未添加虚拟服务器时数据块分布示意图;
图9为添加虚拟服务器后数据块分布示意图。
【具体实施方式】
[0012]下面参照附图所示,通过【具体实施方式】对本发明进一步说明:
实施例1:
一种基于一致性hash的网络cache设计方法,首先将服务器集群的缓存集中,放入统一的资源池内,资源池内的所有资源可以被任一资源调度使用,采用NUMA进行缓存的管理;将hash值放入一个2m的环形空间中,将单台服务器也看成对象进行hash计算放入hash环中;然后将数据块Object A、B、C和D通过hash算法计算出对应的key值,将该值放入到hash空间中;通过以上两部操作就将服务器节点和数据块都映射在同一hash空间,然后按照顺时针方向将数据块放入到对应的服务器节点中,如图2、图3所示。
[0013]服务器集群是将多台服务器集中在一起提供服务,但是在客户端看来是一台服务器。集群可以进行并行操作,集群化操作可以减少单点故障的影响,并实现了集群化的资源高效利用。若存在N台服务器集群,那么对任一服务器来说其缓存都扩大了 N倍,图1所示,由于缓存池中缓存对于任一服务器来说,都存在不同的访问速度(本地缓存访问速度快,非本地缓存访问速度慢),因此采用NUMA进行缓存的管理。
[0014]NUMA(Non Uniform Memory Access Architecture)技术可以使众多服务器像单一系统那样运转,同时保留小系统便于编程和管理的优点。非统一内存访问(NUMA)是一种用于多处理器的电脑记忆体设计,内存访问时间取决于处理器的内存位置。在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。
[0015]实施例2:
在实施例1的基础上,本实施例中,对于任一集群的操作来说,都存在单台服务器宕机的情况,但是服务器宕机不能影响集群的性能和服务,因此需要对服务器的删除和添加进行操作,服务器集群中若出现某一台服务器宕机,其缓存内容失效,影响了全部服务器的工作,那么就要出现缓存迀移;同理,当服务器集群的数量不满足要求,无法为外界提供足够服务,需要添加节点数量进行扩容,过程如下:
若N2节点宕机,该节点失效,如图4所示,原来指向N2的数据块A与B需要重新缓存到N3中,会出现缓存迀移,但是数据块C与D仍然缓存到原来的节点中,因此不会出现数据全部迀移,减少了系统资源的消耗;
若服务器集群需要扩容或者替代失效节点,如N4节点添加到服务器集群,如图5所示,原来指向N3的数据块A需要重新缓存到N4中,会出现缓存迀移,但是数据块B、C与D仍然缓存到原来的节点中,因此不会出现数据全部迀移,同样减少了系统资源的消耗。
[0016]实施例3
在实施例1或2的基础上,本实施例所述方法将物理节点通过算法得到虚拟节点,并将虚拟节点映射到hash空间,虚拟节点的添加能避免了单一服务器节点出现大量的数据缓存,实现了数据的均衡负载。
[0017]实施例4
在实施例3的基础上,本实施例所述虚拟节点具体设置过程为:
将Nodel通过hash算法得到Key值命名为VNl,然后将2m_key的值作为新的key值,得到新节点命名为VN4.即节点I在节点中虚拟出两个节点,两个节点时在hash空间中均勾分布。同理,对于Node2和Node3也是相同计算,这样三个物理节点变成了 6个虚拟节点,将6个虚拟节点映射到hash空间中。可以看到原来集中的缓存(如图6,图8所示),可以相对均匀的分布到3个物理节点中,如图7,图9所示。
[0018]以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
【主权项】
1.一种基于一致性hash的网络cache设计方法,其特征在于:首先将服务器集群的缓存集中,放入统一的资源池内,资源池内的所有资源可以被任一资源调度使用,采用NUMA进行缓存的管理;将hash值放入一个2m的环形空间中,将单台服务器也看成对象进行hash计算放入hash环中;然后将数据块通过hash算法计算出对应的key值,将该值放入到hash空间中。2.根据权利要求1所述的一种基于一致性hash的网络cache设计方法,其特征在于:若某节点宕机,该节点失效,原来指向该节点的数据块重新缓存到另一节点中,其他数据块仍然缓存到原来的节点中; 若服务器集群需要扩容或者替代失效节点,原来指向失效节点的数据块重新缓存到新增加节点中,其他数据块仍然缓存到原来的节点中。3.根据权利要求1或2所述的一种基于一致性hash的网络cache设计方法,其特征在于:所述方法将物理节点通过算法得到虚拟节点,并将虚拟节点映射到hash空间。4.根据权利要求3所述的一种基于一致性hash的网络cache设计方法,其特征在于,所述虚拟节点具体设置过程为:将其中的一个Node节点,通过hash算法得到Key值命名,然后将2m-key的值作为新的key值命名,虚拟出两个节点,两个节点时在hash空间中均匀分布;同理,其他节点也是相同计算,将获得的虚拟节点映射到hash空间中。
【专利摘要】本发明公开了一种基于一致性hash的网络cache设计方法,首先将服务器集群的缓存集中,放入统一的资源池内,资源池内的所有资源可以被任一资源调度使用,采用NUMA进行缓存的管理;将hash值放入一个2m的环形空间中,将单台服务器也看成对象进行hash计算放入hash环中;然后将数据块通过hash算法计算出对应的key值,将该值放入到hash空间中。本发明技术用于服务器集群的缓冲共享和缓存均衡,能够加速大规模数据访问速度和消除单节点缓存失效的影响,可以有效提高服务器集群的IO性能,不但提供统一存储空间,并能将缓存相对均匀的分布到各服务器节点中。
【IPC分类】H04L29/08
【公开号】CN105007328
【申请号】CN201510457562
【发明人】张凡凡, 吴登勇, 李保来
【申请人】山东超越数控电子有限公司
【公开日】2015年10月28日
【申请日】2015年7月30日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1