一致性哈希算法的应用及其优化.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一致性哈希算法的应用及其优化

一致性哈希算法的应用及其优化 一.简单哈希算法 哈希(Hash )就是把任意长度的输入通过散列算法,变换成固定长度的输出,该输出 就是散列值。这种转换是一种压缩映射,使得散列值的空间通常远小于输入的空间,不同的 输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。哈希算法是一种消 息摘要算法,虽然哈希算法不是一种加密算法,但由于其单向运算,具有一定的不可逆性使 其成为加密算法中的一个重要构成部分。 二.分布式缓存问题 哈希算法除了在数据加密中的运用外,也可以用在常见的数据分布式技术中。哈希计算 是通过求模运算来计算哈希值的,然后根据哈希值将数据映射到存储空间中。设有由N 个 存储节点组成的存储空间,采用简单哈希计算将一个数据对象 object 映射到存储空间上的 公式为:Hash (object )% N 。 现在假设有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读写数 据库的方式已经不能满足用户的访问,于是想引入Memcached 作为缓存机制。现在一共有 三台机器可以作为Memcached 服务器,如下图1 所示。 1 图1.三台memcached 服务器 可以用简单哈希计算:h = Hash(key) % 3 ,其中Hash 是一个从字符串到正整数的哈希 映射函数,这样能够保证对相同 key 的访问会被发送到相同的服务器。现在如果我们将 Memcached Server 分别编号为0、1、2 ,那么就可以根据上式和key 计算出服务器编号h , 然后去访问。 但是,由于这样做只是采用了简单的求模运算,使得简单哈希计算存在很多不足: 1)增删节点时,更新效率低。当系统中存储节点数量发生增加或减少时,映射公式将 发生变化为Hash(object)%(N ±1),这将使得所有 object 的映射位置发生变化,整个系统数 据对象的映射位置都需要重新进行计算,系统无法对外界访问进行正常响应,将导致系统处 于崩溃状态。 2 )平衡性差,未考虑节点性能差异。由于硬件性能的提升,新添加的节点具有更好的 承载能力,如何对算法进行改进,使节点性能可以得到较好利用,也是亟待解决的一个问题。 3 )单调性不足。衡量数据分布技术的一项重要指标是单调性,单调性是指如果已经有 一些内容通过哈希计算分派到了相应的缓冲中,当又有新的缓冲加入到系统中时,哈希的结 果应能够保证原有已分配的内容可以被映射到新的缓冲中去,而不会被映射到旧的缓冲集合 中的其他缓冲区。 由上述分析可知,简单地采用模运算来计算object 的Hash 值的算法显得过于简单,存 在节点冲突,且难以满足单调性要求。 2 三.一致性哈希算法 一致性哈希算法(Consistent Hashing )最早在David Karger ,Eric Lehman 等人的论文 《Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web》中被提出,是当前较主流的分布式哈希表协议之一,它对简单哈希 算法进行了修正,解决了热点 (Hot Pot )问题。 一致性哈希的原理:首先,对存储节点的哈希值进行计算,其将存储空间抽象为一个环, 将存储节点配置到环上。环上所有的节点都有一个值。其次,对数据进行哈希计算,按顺时 针方向将其映射到离其最近的节点上去。 现在根据一致性哈希算法原理,重新解决上面分布式缓存问题。 1.一致性哈希将整个哈希值空间组织成一个虚拟的圆环,现在假设某哈希函数H 的值空 间为0 – 232-1 (即哈希值是一个32 位无符号整形),那么整个哈希空间环如下图2 : 32-1 2 0

文档评论(0)

ailuojue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档