一致哈希

✍ dations ◷ 2025-09-10 03:26:34 #Hashing

一致哈希 是一种特殊的哈希算法。在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对 K / n {\displaystyle K/n} 个关键字重新映射,其中 K {\displaystyle K} 是关键字的数量, n {\displaystyle n} 是槽位数量。然而在传统的哈希表中,添加或删除一个槽位的几乎需要对所有关键字进行重新映射。

一致哈希由MIT的Karger及其合作者提出,现在这一思想已经扩展到其它领域。在这篇1997年发表的学术论文中介绍了“一致哈希”如何应用于用户易变的分布式Web服务中。哈希表中的每一个代表分布式系统中一个节点,在系统添加或删除节点只需要移动 K / n {\displaystyle K/n} 项。

一致哈希也可用于实现健壮缓存来减少大型Web应用中系统部分失效带来的负面影响。

一致哈希的概念还被应用于分布式散列表(DHT)的设计。DHT使用一致哈希来划分分布式系统的节点。所有关键字都可以通过一个连接所有节点的覆盖网络高效地定位到某个节点。

在使用n台缓存服务器时,一种常用的负载均衡方式是,对资源o的请求使用 hash ( o ) = o mod n {\displaystyle {\mbox{hash}}(o)=o\mod n} 来映射到某一台缓存服务器。当增加或减少一台缓存服务器时这种方式可能会改变所有资源对应的hash值,也就是所有的缓存都失效了,这会使得缓存服务器大量集中地向原始内容服务器更新缓存。因此需要一致哈希算法来避免这样的问题。一致哈希尽可能使同一个资源映射到同一台缓存服务器。这种方式要求增加一台缓存服务器时,新的服务器尽量分担存储其他所有服务器的缓存资源。减少一台缓存服务器时,其他所有服务器也可以尽量分担存储它的缓存资源。一致哈希算法的主要思想是将每个缓存服务器与一个或多个哈希值域区间关联起来,其中区间边界通过计算缓存服务器对应的哈希值来决定。(定义区间的哈希函数不一定和计算缓存服务器哈希值的函数相同,但是两个函数的返回值的范围需要匹配。)如果一个缓存服务器被移除,则它所对应的区间会被并入到邻近的区间,其他的缓存服务器不需要任何改变。

一致哈希将每个对象映射到圆环边上的一个点,系统再将可用的节点机器映射到圆环的不同位置。查找某个对象对应的机器时,需要用一致哈希算法计算得到对象对应圆环边上位置,沿着圆环边上查找直到遇到某个节点机器,这台机器即为对象应该保存的位置。当删除一台节点机器时,这台机器上保存的所有对象都要移动到下一台机器。添加一台机器到圆环边上某个点时,这个点的下一台机器需要将这个节点前对应的对象移动到新机器上。更改对象在节点机器上的分布可以通过调整节点机器的位置来实现。

David Karger及其合作者列出了使得一致哈希在互联网分布式缓存中非常有用的几个特性:

在亚马逊的云存储系统Dynamo的数据划分功能模块中使用一致哈希。

相关

  • 多聚腺苷酸化多腺苷酸化(英语:Polyadenylation)是指多聚腺苷酸与信使RNA(mRNA)分子的共价链接。在蛋白质生物合成的过程中,这是产生准备作翻译的成熟mRNA的方式的一部分。在真核生物中,多聚腺苷
  • 报任安书《报任少卿书》是司马迁给其友任少卿(姓任名安, 字少卿)的一封回信。因从回信中可以见到太史公司马迁写史记的理想,故为后代所传颂。汉武帝征和二年(前91年)发生巫蛊之祸,司马迁之
  • 病毒学病毒学是一门以病毒 -- 亚微观的,蛋白质外壳中包含的遗传物质的寄生颗粒 - 和病毒样代理(virus-like agents)为研究对象的学科。它关注病毒的以下方面:病毒的结构,分类和进化,感染
  • 克劳修斯定理克劳修斯定理(英语:Clausius theorem)也称为克劳修斯不等式(英语:Clausius Inequality),全称克劳修斯积分不等式。是德国科学家鲁道夫·克劳修斯在1855年提出的热力学不等式,描述在
  • 赤松健赤松健(日语:あかまつ けん,1968年7月5日-)是日本的男性漫画家,东京都东久留米市人,出生于爱知县名古屋市。自高中起确立创作的志向,后来渐渐往漫画界发展。他凭着短篇漫画《短暂夏
  • 德国殖民地德意志帝国殖民地(德语:Deutsche Kolonien 或 Deutsches Kolonialreich)由霍亨索伦王朝的德意志帝国在19世纪后期建立。德国统一之前,一些德意志政权也曾经短暂建立过殖民地。15
  • 扬·奥尔特扬-亨德里克·奥尔特(荷兰语:Jan Hendrik Oort,1900年4月28日-1992年11月5日),荷兰天文学家,在银河系结构和动力学、射电天文学方面做出了许多重要的贡献。奥尔特1900年出生于荷兰
  • 谢尔盖·米哈尔科夫谢尔盖·弗拉基米罗维奇·米哈尔科夫(俄语:Серге́й Влади́мирович Михалко́в,1913年3月13日-2009年8月27日),苏联及俄罗斯作家、寓言家、儿童读物作
  • 塔特兰斯卡鲁门尼卡塔特兰斯卡鲁门尼卡(斯洛伐克语:Tatranská Lomnica)是位于斯洛伐克北部的一个村镇。塔特兰斯卡鲁门尼卡是斯洛伐克著名的旅游胜地,以滑雪和登山运动而著称。塔特兰斯卡鲁门尼卡
  • 追忆似水年华《追忆似水年华》(法语:,又译作《追寻逝去的时光》、《挽回失去的时间》、《追忆似水流年》、《往事追迹录》,是法国作家马塞尔·普鲁斯特(1871年—1922年)的作品,以其长度及意识流