加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹤壁站长网 (https://www.0392zz.cn/)- 分布式云、存储数据、视频终端、媒体处理、内容创作!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

面试又被问到一致性 Hash 算法?

发布时间:2021-03-07 16:42:41 所属栏目:传媒 来源:互联网
导读:据分片 先让我们看一个例子吧 我们经常会用 Redis 做缓存,把一些数据放在上面,以减少数据的压力。 当数据量少,访问压力不大的时候,通常一台Redis就能搞定,为了高可用,弄个主从也就足够了; 当数据量变大,并发量也增加的时候,把全部的缓存数据放在一台

据分片

先让我们看一个例子吧

我们经常会用 Redis 做缓存,把一些数据放在上面,以减少数据的压力。

当数据量少,访问压力不大的时候,通常一台Redis就能搞定,为了高可用,弄个主从也就足够了;

当数据量变大,并发量也增加的时候,把全部的缓存数据放在一台机器上就有些吃力了,毕竟一台机器的资源是有限的,通常我们会搭建集群环境,让数据尽量平均的放到每一台 Redis 中,比如我们的集群中有 4 台Redis。

那么如何把数据尽量平均地放到这 4 台Redis中呢?最简单的就是取模算法:

hash( key ) % N,N 为 Redis 的数量,在这里 N = 4 ;
 

么可以想象一下,当前大部分缓存的位置都会是错误的,极端情况下,就会造成 缓存雪崩。

03一致性 Hash 算法

一致性 Hash 算法可以很好地解决这个问题,它的大概过程是这样的:

把 0 作为起点,2^32-1 作为终点,画一条直线,再把起点和终点重合,直线变成一个圆,方向是顺时针从小到大。0 的右侧第一个点是 1 ,然后是 2 ,以此类推。

对三台服务器的 IP 或其他关键字进行 hash 后对 2^32 取模,这样势必能落在这个圈上的某个位置,记为 Node1、Node2、Node3。

(编辑:鹤壁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读