- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分布式存储哈西法浅析
分布式存储哈西算法浅析
【摘 要】数据均衡分布技术是分布式存储系统技术中的一个重要分支,按照一定的策略将数据尽可能均匀分布到所有的存储节点上,使得系统具有良好的负载均衡性能和扩展性,深入研究可靠的高性能数据均衡技术对于分布式存储系统而言,具有重要意义。本文对简单哈希算法和一致性哈希算法作了简洁清晰的分析,从中可以了解到哈希算法的主要关注点。
中国论文网 /1/viewhtm
【关键词】一致性哈希算法;分布式存储
一、哈希算法分析
(一)简单哈希算法
哈希(hash)计算是常见的数据分布技术,其通过求模运算来计算哈希值,然后据此将数据映射到存储空间中。常见的简单hash算法有以下:
?直接取余法:f(x):= x mod maxM ; maxM一般是不太接近 2^t 的一个质数。
?乘法取整法:f(x):=trunc((x/maxX)*maxlongit) mod maxM,主要用于实数。
?平???取中法:f(x):=(x*x div 1000 ) mod 1000000); 平方后取中间的。
但是由于只是采用了简单的求模运算,使得简单哈希计算存在很多不足。
1.增删节点时,更新效率低。当系统中存储节点数量发生增加或减少时,映射公式将发生变化为hash(object)%(N±1),这将使得所有object的映射位置发生变化,整个系统数据对象的映射位置都需要重新进行计算。
2.平衡性差,未考虑节点性能差异。由于硬件性能的提升,新添加的节点具有更好的承载能力,如何对算法进行改进,使节点性能可以得到较好利用,也是亟待解决的一个问题。
3.单调性不足。当又有新的缓冲加入到系统中时,应能够保证原有已分配的内容可以被映射到新的缓冲中去。
(二)一致性哈希算法
一致性哈希(consistent hashing)在移除/添加一个节点时,它能够尽可能小的改变已存在key 映射关系,从而尽可能的满足单调性的要求,以下我们分步来讲解consistent hashing算法的基本原理。
a.把对象映射到hash空间
一般的hash算法都是将value映射到一个32位的key值,也即是0~-1次方的数值空间;我们用一个首(0)尾(-1)相接的圆环来想象将这个空间。接下来考虑5个对象object1~object5,通过hash函数计算出的hash值key:
hash(object1)=key1;hash(object2)=key2;…。在环上的分布如图1所示。
b.把存储设备映射到hash空间
Consistent hashing的基本思想就是将对象和存储设备(以下称为cache)都映射到同一个hash数值空间中,并且使用相同的hash算法。
假设当前有A,B和C共3台存储设备,首先对其进行映射,一般采用其主机名或IP地址:
hash(“192.168.1.21”)= key A;hash(“192.168.1.22”) = key B;
hash(“192.168.1.23”) = key C;
那么对应其key值,他们在hash空间的映射结果如图2所示。
c.把对象映射到存储空间
在这个环形空间中,如果沿着顺时针方向从对象的key值出发,直到遇见一个cache,那么就将该对象存储在这个cache上,因为对象和cache的hash值是固定的,因此这个对应的cache必然是唯一和确定的,实现的结果如图3所示。
d.存储设备变动时的处理
在对简单哈希算法的分析时我们知道,通过hash然后求余的方法带来的最大问题就在于不能满足单调性,现在就来分析分析consistent hashing算法。
i.存储设备减少
假设存储设备cache B故障,根据上面讲到的映射方法,这时受影响的将仅是那些沿cache B逆时针遍历直到下一个cache(cache C)之间的对象,也即是本来映射到cache B上的那些对象。
因此这里仅需要变动对象object3、object5,将其重新映射到cache C上即可;参见图4。
ii.存储设备增加
添加一台新的cache D的情况,假设在这个环形hash空间中,cache D被映射在对象object3和object5之间。这时受影响的将仅是那些沿cache D逆时针遍历直到下一个cache(cache A)之间的对象(它们是也本来映射到cache B上对象的一部分),将这些对象重新映射到cache D上即可,参见图5。
e、虚拟节点
平衡性(Balance)是指哈希的结果能够尽可能分布到所有的存储设备中去,这
原创力文档


文档评论(0)