一致哈希

✍ dations ◷ 2025-07-05 21:03:15 #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的数据划分功能模块中使用一致哈希。

相关

  • 退伍军人事务部退伍军人(英语:Veteran),指服完常备役或预备役之后,退伍离开军队,恢复一般公民身份,至社会工作的人。在台湾又称为荣民。在韩语中,参加过特定战事的退伍军人(如各国的韩战、越战老兵)
  • 欧洲太空控制中心欧洲空间业务中心(英语:European Space Operations Centre)是欧洲空间局(ESA)的主要任务控制中心,位于德国达姆施塔特。欧洲空间业务中心的主要任务是代表欧洲空间局和Launch and
  • 烟煤烟煤(英语:Bituminous coal; 希腊语:Λιθάνθρακας),是一种相对软的煤,包含类似焦油的沥青物质。质量优于褐煤但低于无烟煤。一般为褐色,有的为暗褐色,经常有亮-暗相间的材
  • 临津江之战釜山镇 – 多大浦 – 东莱城 – 尚州 – 忠州弹琴台 – 玉浦 – 泗川 – 临津江 – 唐浦 – 唐项浦 – 闲山岛 – 龙仁 – 梨峙 – 平壤 – 釜山浦 – 北关
  • 沼泽地沼泽是土壤经常为水饱和,地表长期或暂时积水,生长湿生和沼生植物,有泥炭累积或虽无泥炭累积但有潜育层存在的地段。沼泽是湿地次级分类单位,但有其独特的特征。沼泽须具有三个相
  • 野鸭绿头鸭(学名:)又名大头绿(雄)、蒲鸭(雌),家鸭是其驯化亚种。绿头鸭飞行速度可达到每小时65公里。绿头鸭常集群活动,营巢于水边的草丛中及树洞等地。每窝产7到11枚卵,孵化期24至27天。
  • SCHOOL革命!SCHOOL革命!(日语:スクール革命!),日本电视台的校园类娱乐节目。2009年4月5日开播,播出时间为每周日11:45至12:45(JST)。主持人为内村光良,常规嘉宾包括山田凉介、八乙女光、知念侑李
  • 深沟深沟,是台湾宜兰县员山乡的一个传统地域名称,位于该乡东南部。相较于今日行政区,其范围大致包括深沟村北部、蓁巷村北部。台湾清治末期,深沟地区为一街庄,称为“深沟庄”,隶属于员
  • 亚瑟·克拉克奖亚瑟·克拉克奖(Arthur C. Clarke Award)是一个英国奖项,颁发给过去一年在英国出版最好的科幻小说。它是由英国作家阿瑟·克拉克资助,于1987年成立。亚瑟·克拉克奖由英国科幻协
  • 羽根直树羽根直树(1976年8月14日-),日本著名围棋棋手,日本棋院中部本部职业九段,其父为著名棋手羽根泰正九段,其妻羽根重子(日语:羽根しげ子)为松冈秀树九段的妹妹,也是职业棋手,其女羽根彩夏亦