多层一致性哈希环及其在创建分布式数据库中的应用制造技术

技术编号:24168635 阅读:22 留言:0更新日期:2020-05-16 02:14
本申请公开了一种多层一致性哈希环的构建方法及其在创建分布式数据库中的应用。本发明专利技术多层一致性哈希环的构建方法在哈希环中加入一个或多个虚拟节点;所述虚拟节点为物理节点在哈希环上的一些复制品,而非实际存在的节点;一个物理节点对应一个或多个虚拟节点;所述虚拟节点与物理节点在哈希环上排列方式、访问方式相同。每当增加物理节点时,需要在哈希环上增加相应个数的虚拟节点;每当删除物理节点时,需要在哈希环上删除所对应所有的虚拟节点。本发明专利技术方法降低了系统雪崩的可能性,使系统更加平衡。当整个物理节点关闭时,防止不必要的节点访问。数据将分布更均衡,利用率更高。

【技术实现步骤摘要】
多层一致性哈希环及其在创建分布式数据库中的应用
本专利技术涉及计算机应用
,特别涉及一种多层一致性哈希环及其在创建分布式数据库中的应用。
技术介绍
在数据库集群中,对物理节点的添加或者删除都是集群管理系统最基本的功能。如果采用哈希取模、取随机数等常规的哈希算法,那么在有物理节点添加或者删除的情况下,大量原有的缓存就会重新建立,这样会给整个数据库集群系统带来严重的性能花销,甚至影响到业务系统的正常运作,而且这样还严重的违反了单调性原则。而一致性哈希算法的出现就是为了保证算法的单调性,即在移除或者添加一个物理节点时,它对于已存在的缓存映射关系的影响非常小。而且,集群中物理节点的数量越多,一致性哈希算法保证单调性的效果越好。一致性哈希算法的原理如下:(1)确定哈希环及环上的物理节点。先确定一个哈希值的范围,例如:(-216,216)。将这个范围的所有哈希值看作为一个顺时针递增且首尾相连的圆环,称之为哈希环。哈希环是实际不存在的虚拟数据结构。假设有A-F的六个节点经过哈希计算后分布在这个哈希环上。那么哈希环的示意图如图1所示。(2)设定物理节点的访问方式如果有一个SQL查询请求,将其SQL语句查询结果映射的对象作为哈希算法的KEY值,那么计算后的哈希值便映射到哈希环里的某一个点,如果该点没有对应到某一个物理节点,那么顺着哈希环进行顺时针查找(即查找哈希值比其大的物理节点),直到第一次找到有映射的物理节点,该节点就是确定的目标节点(即比其哈希值大的最小节点),如果超过了216这个范围却仍然找不到节点,则匹配至第一个物理节点(因为首尾相连,也可以认为是一直进行的顺时针查找)。如果计算的哈希值介于B~C之间,那么匹配到的物理节点即为C节点。如果该哈希值的值大于F,那么则命中A物理节点。(3)增加节点的处理假设要增加一个G物理节点,如图2中灰色圆形框所示。先计算该物理节点的哈希值,将其值对应到哈希环的某一点上。同时,哈希环的访问方式不变,那么此时映射关系将会发生改变的是分布在节点D到节点G之间的哈希值,这一部分哈希值在节点G增加后,会被映射到节点G,而不是原来的节点E。原分布在节点G到节点E之间的哈希值的映射关系不会改变,还是会被映射到节点E。这样的结果是增加一个物理节点之后仅仅一小部分缓存不命中,需要重新建立。尽管应用一致性哈希算法之后,依然会存在节点增加带来的映射关系改变的问题,但是相比于传统哈希取模的方式已经将映射关系改变的情况降到了尽可能的低。(4)删除节点的处理假设需要将图2中的节点G删除掉,那么哈希换将会恢复到原始哈希环的状态。此时,被映射到节点G上哈希值的缓存必然会不命中,这种情况下,这部分哈希值将会依顺时针被映射到E节点上,这时,所需要重新建立的缓存仅仅是哈希值分布在节点E到节点G部分的哈希值的缓存。所以,删除一个哈希环上的节点所需要重新建立的缓存也比传统哈希取模的方法大大减少。一致性哈希算法是目前使用得非常广泛的一种负载均衡算法。一致性哈希算法在动态变化的缓存环境中,很好的满足了判定哈希算法好坏的两个因素——平衡性和单调性。(1)平衡性:平衡性是指所有的缓存空间都应该得到充分的利用,所以好的哈希算法应该能够使哈希结果的分布尽可能的均匀。(2)单调性:单调性是指原有系统缓存建立稳定之后,系统中又增加了新的缓存节点,此时,已建立好的缓存应该可以被映射到新增的缓存空间中,而不会被映射到原有的缓存空间中。但是经过以上的
技术介绍
分析研究后,本专利技术发现,决定使用一致性哈希算法时,还必须确定一致性哈希中所使用的哈希算法,这也是非常关键的一步,决定了环上节点分布的均匀程度,还有算法效率等等因素。
技术实现思路
本专利技术所要解决的技术问题在于,提供了一种多层一致性哈希环及其在创建分布式数据库中的应用。本专利技术多层一致性哈希环方法,根据容量和规则计算物理节点的权重。构造第一个散列环并为物理节点分配不同的权重。为某些物理节点构建第二个散列环,其中第二个散列环具有更多容量,第二个散列环中的节点是虚拟节点。如果某些虚拟节点存在不平衡,则构造更多的散列环。使用多层散列来定位和访问环中的数据,一旦节点出现故障,直接绕过非第一层节点,以加速重新平衡。为解决上述技术问题,本专利技术提供了一种多层一致性哈希环的构建方法,在哈希环中加入一个或多个虚拟节点;所述虚拟节点为物理节点在哈希环上的一些复制品,而非实际存在的节点;一个物理节点对应一个或多个虚拟节点;所述虚拟节点与物理节点在哈希环上排列方式、访问方式相同。优选地,所述方法中:每当增加物理节点时,需要在哈希环上增加相应个数的虚拟节点;每当删除物理节点时,需要在哈希环上删除所对应所有的虚拟节点。优选地,所述方法中,进一步包括:根据容量和规则计算物理节点的权重;构造第一个散列环并为物理节点分配不同的权重;为某些物理节点构建第二个散列环,其中第二个散列环具有更多容量,第二个散列环中的节点是虚拟节点;如果某些虚拟节点存在不平衡,则构造更多的散列环;构造多层一致的哈希环;使用多层散列来定位和访问环中的数据。优选地,所述方法中,进一步包括:一旦节点出现故障,直接绕过非第一层节点,用于加速重新平衡。优选地,所述方法中,进一步包括:(一)哈希环启动;(二)创建虚拟节点;(三)调整哈希环的层数;(四)调整虚拟节点以进行重新平衡;(五)数据迁移。优选地,所述步骤(一)哈希环启动,进一步包括:根据规则和容量计算每个物理节点的权重;前述规则和容量包括但不限于:存储大小,存储类型,存储时间和存储风险。优选地,所述步骤(二)创建虚拟节点,进一步包括:在创建虚拟节点期间确保每个虚拟节点的容量大小相同;每个物理磁盘的虚拟节点数取决于权重;虚拟节点和物理节点之间的映射关系将作为元数据记录在映射表中。优选地,所述步骤(三)调整哈希环的层数,进一步包括:如果单位权重的虚拟节点数减少到阈值,则将虚拟节点的层数增加1;如果单位权重的虚拟节点的数量高于阈值,则减小虚拟节点的层。优选地,所述步骤(五)数据迁移,进一步包括:将删除虚拟节点中的数据迁移到邻居节点。为解决上述技术问题,本专利技术还提供了一种如前述任一项所述多层一致性哈希环的构建方法在创建分布式数据库中的应用。本专利技术有益效果包括:(1)改进的一致性哈希系统可以自动适应重新平衡。(2)降低了系统雪崩的可能性,使系统更加平衡。(3)当整个物理节点关闭时,防止不必要的节点访问。(4)数据将分布更均衡,利用率更高。(5)通过动态适应,可用性将更高。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是一部分实施例或现有技术,对于本领域普通技术人员来讲,在不付出创造性本文档来自技高网
...

【技术保护点】
1.一种多层一致性哈希环的构建方法,其特征在于,在哈希环中加入一个或多个虚拟节点;所述虚拟节点为物理节点在哈希环上的一些复制品,而非实际存在的节点;一个物理节点对应一个或多个虚拟节点;所述虚拟节点与物理节点在哈希环上排列方式、访问方式相同。/n

【技术特征摘要】
1.一种多层一致性哈希环的构建方法,其特征在于,在哈希环中加入一个或多个虚拟节点;所述虚拟节点为物理节点在哈希环上的一些复制品,而非实际存在的节点;一个物理节点对应一个或多个虚拟节点;所述虚拟节点与物理节点在哈希环上排列方式、访问方式相同。


2.根据权利要求1所述多层一致性哈希环的构建方法,其特征在于,所述方法中:每当增加物理节点时,需要在哈希环上增加相应个数的虚拟节点;每当删除物理节点时,需要在哈希环上删除所对应所有的虚拟节点。


3.根据权利要求1所述多层一致性哈希环的构建方法,其特征在于,所述方法中,进一步包括:
根据容量和规则计算物理节点的权重;
构造第一个散列环并为物理节点分配不同的权重;
为某些物理节点构建第二个散列环,其中第二个散列环具有更多容量,第二个散列环中的节点是虚拟节点;
如果某些虚拟节点存在不平衡,则构造更多的散列环;
构造多层一致的哈希环;
使用多层散列来定位和访问环中的数据。


4.根据权利要求3所述多层一致性哈希环的构建方法,其特征在于,所述方法中,进一步包括:一旦节点出现故障,直接绕过非第一层节点,用于加速重新平衡。


5.根据权利要求1所述多层一致性哈希环的构建方法,其特征在于,所述方法中,进一步包括:

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:掌迅亿通北京信息科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1