一致性 Hash 原理

一致性哈希是啥?

  引用百度百科的一段介绍:一致性哈希算法在1997年由麻省理工学院提出,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。

什么情况下我们要用到一致性哈希?

  一致性 hash 在分布式系统中应用较为广泛。例如,Redis 集群便是一个典型的例子。常见的生产环境中,为了提高 Redis 的读写性能以及高可用,最常见的方式就是做主从复制,组成 Master-MasterMaster-Slave 的形式,或者搭建 Redis 集群,进行数据读写分离,类似数据库的主从复制读写分离
  同样,与数据库类似,单表数据过大时就需要对其进行分库。对于 Redis 也是一样的。数据量过大时,同样需要进行类似操作。但是,Redis 没有提供分库分表的功能。只能自己定义规则。常见的可以使用随机存储,随机存储就会有一个问题,存完之后你也不知道存在了那个服务器,假设现在有 8 台服务器,两两相对进行主从复制的方式成为 4 个节点的集群。如果需要在其中查询数据,则需要遍历 4 台服务器。显然,这样是不合理的。可能你就会想到,用键做 HASH,用 HASH 值取余获得固定的服务器。这样读写都在这台服务器进行。

Redis 怎么进行请求优化?

  那么,接下来想一下在 Redis 中使用 HASH 的可行性。
  举个栗子:现在有 5 台 Redis 服务器,对所有服务器进行编号,分别为0、1、2、3、4,现在要将图片存入 Redis 中,key 为图片名称,value 为图片 URL。存储与读取时,对 key 进行计算 hash(图片名称) % 5,取余因数视服务器个数而定。计算得到固定编号的服务器。取余 5 的结果必然

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值