一致性Hash原理解析

一.什么是一致性Hash算法?
顾名思义,该算法为了解决Hash算法一致性问题,一般的Hash算法,采用hash(比如用户id)%N,当新增或下线服务器时,用户id与服务器的映射关系会大量失效。一致性Hash则利用了hash环对其进行了改进,对最大整数(2^23)取模。
具体实现思路:首先将N台服务器的ip地址映射到hash环上,然后对用户id同样映射到hash环,在环上服务器之间左侧的用户id会交给该服务器处理。
二.应用场景?
主要应用于分布式、负载均衡等
例如:你有 N 个 cache 服务器,那么如何将一个对象object 映射到 N 个 cache 上呢,你很可能会采用取模(key%N)的方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache服务器。当一个服务器挂了或者增加了一个,那么得到的hash值=key%(N-1)(或者key%(N+1)),造成的后果大量的缓存在同一时间失效,大量请求压在后端服务器上,造成缓存雪崩,这不是我们想看到的。
三.一致性Hash实现:
1、首先计算出每个节点的hash值,并将其配置到0~(2的32次方)的圆(continuum)上。
2、用同样的hash函数计算出存储数据的hash值,并映射到相同的圆上。
3、然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个节点上。如果超过(2的32次方)仍然找不到服务器,就会保存到第一台memcached服务器上。
在这里插入图片描述
风险均摊,同时避免缓存雪崩,同时引入虚拟节点连接物理机器分配数据存储地址,保障新增服务器后数据处理压力均摊。
解决一致性hash偏斜问题,增加虚拟节点(复制已有节点)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值