一致性 hash

一致性哈希算法是为了解决分布式系统中负载均衡和节点伸缩时请求重新分发的问题。传统哈希算法会导致大规模重新映射,而一致性哈希则通过将key和服务器ip映射到哈希环上,实现节点变化时只需少量键重新映射。在添加或移除服务器时,一致性哈希能有效减少受影响的请求。此外,通过创建虚拟节点,可以提高分布均匀性。该算法广泛应用于分布式缓存如Redis、Memcached以及Cassandra等系统。
摘要由CSDN通过智能技术生成

分布式系统中,多个节点间实现请求的负载均衡, 如果部分实例由于一些特殊的原因宕机或者需要扩容,这个时候就涉及到部分请求重新分发的问题。

为了最小化请求重新分发,引入了一致性 hash 算法。

先看下传统的 hash 算法解决请求分发问题的过程。

hash 

hash 算法大家应该很熟悉了,就是将不定长的数据经过计算后输出定长的结果。

如果在分布式系统中使用 传统hash 方法来分发请求,

  server =  hash(key) % n 

这会带来两个问题:

  1. 一旦服务器节点数 n 发生伸缩,就需要重新计算所有 hash ,会大大的消耗服务器性能从而降低整个系统的吞吐量。

  2. 可能出现分布不均匀问题,部分节点负载过高,部分节点负载过低。

为了解决传统 hash 方法带来的问题,1997年麻省理工提出了一致性 hash 算法( 也称hash 环)。

一致性 hash

也称作 hash 环,一致性哈希是一种特殊的哈希技术,当哈希表的大小发生变化时,平均只需要重新映射n/m个键,其中n是键的数量,m是插槽的数量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【非典型Coder】

赏个鸡腿吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值