什么是虚拟化技术?虚拟化技术浅析

1.前言
在《文章让你彻底了解什么是一致性哈希》一文中,我们了解了一致性哈希是什么以及它存在的一些问题 。如果您还不知道或需要复习,请点击以下链接回味 。
原文链接:
文末还有两个小问题,后面两个小问题会在下面详细漂亮的回答 。
2.问题回顾
问题1:只有在大样本的情况下,哈希函数才会统一 。如果机器较少,哈希后的机器位置不统一怎么办?
???
问题2:即使一开始机器分布均匀,添加机器后也会造成不均匀 。
???
如果有不明白的问题,请点击“一篇文章让你全面了解什么是一致性哈希”一文 。
原文链接:
3.解决方案
【什么是虚拟化技术?虚拟化技术浅析】

什么是虚拟化技术?虚拟化技术浅析

文章插图
上面问题1提到,如果机器很少,可能会在hash后掉入环中,可能会形成不均匀的情况,从而导致负载不均衡的情况,即:
因为散列函数必须在足够大的样本中,散列后的分布会显得均匀 。因此,对于问题1,我们引入虚拟节点的概念 。比如有3台物理机,分别是m-1、m-2和m-3,假设虚拟节点数为1000.
虚拟化 m-1 m-1-1、m-1-2、m-1-3...... m-1-1000
m-2 虚拟化 m-2-1、m-2-2、m-2-3.....m-2-1000
m-3 虚拟化 m-3-1、m-3-2、m-3-3.....m-3-1000,
然后建立物理机和虚拟机的对应表,以便通过物理机找到对应的虚拟机,通过虚拟机找到对应的物理机,如下 。
???
在这种情况下,通过每个真实物理机的虚拟化节点,经过哈希处理,映射到环上 。注意,在环上抢点的是虚拟节点,而且由于每台物理机的虚拟节点数量相等,所以它们在环上的分布可以认为是比较均匀的 。
当数据到来时,它也根据数据找到它在环上的位置,然后通过顺时针规则找到离它最近的虚拟节点,然后将数据存储在虚拟节点对应的物理机上(通过虚拟节点-物理机对应表搜索) 。
什么是虚拟化技术?虚拟化技术浅析

文章插图
???
如图所示,环上的节点都是虚拟节点 。为简单起见,假设每台物理机只有3个虚拟节点,当数据经过哈希到上图中的位置后映射到环上的位置时,顺时针找最接近的 。m-1-1,然后使用“虚拟节点-物理机”映射表找到m-1-1对应的m-1个物理机进行存储 。
4.加减机数据迁移
类似地,如果你添加一台 m4 机器,将其虚拟化为相同数量的虚拟节点,并将它们分布在环上 。为了简单起见,每台物理机只有3个虚拟节点,但实际上虚拟化成很多,比如上面提到的1000个虚拟节点 。
???
所以原图中的绿色数据属于m-1的m-1-1部分,但现在中间多了一个m-4-1 。因此,按照顺时针规则,数据的灰色部分来自m-1 。m-1-1 虚拟节点转移到 m-4 上的 m-4-1 节点 。也满足虚拟节点分布均匀(即每台物理机负载均衡),数据迁移成本低的条件 。
???
5.哈希冲突
哈希冲突问题,即两个虚拟节点在环上发生冲突,目前的解决方案是两个虚拟节点对应的两台真实物理机存储相同的数据 。另外,发生冲突的概率很小,属于小概率事件 。例如,环上的哈希值范围为 0~2^64,即环上总共可以有 2^64 个点,但虚拟节点的数量远大于这个总数 。小,所以发生冲突的可能性比较低,所以可以用上面的策略来解决 。
郑重声明:本文版权归原作者所有,转载文章仅出于传播更多信息之目的 。如作者信息标注有误,请尽快联系我们修改或删除,谢谢 。