一致性哈希算法

1.基本概念

一致性哈希算法在很多领域有应用,例如分布式缓存领域的 MemCache,Redis,负载均衡领域的 Nginx,各类 RPC 框架。在移除或者添加一个服务器时,一致性哈希算法能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式哈希表中存在的动态伸缩等问题。

2.特点

一致性哈希算法有以下的特点:

  • 1.均衡性。均衡性是指哈希的结果能够尽可能分布到所有的缓冲节点中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。
  • 2.单调性。单调性是指当缓冲区大小变化时一致性哈希尽量保护已分配的内容不会被重新映射到新缓存区,来减少大量的重新hash提高性能。
  • 3.分散性。在分布式环境中,终端有可能看不到所有的缓存,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓存上时,由于不同终端所见的缓冲范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓冲区中。这种情况显然是应该避免的,因为它导致相同内容被存储到不同缓存中去,降低了系统存储的效率。
  • 4.负载。好的哈希算法应能够尽量降低缓冲的负荷。
3.分布式缓存应用

我们从一个具体场景来看:redis 是如何使用一致性 hash 算法保证缓存命中率、容错性和可扩展性的。

  • 1.首先求出 redis 服务器(节点)的哈希值,并将其配置到 0 ~ 2的32次方 的圆(continuum)上。
  • 2.然后采用同样的方法求出存储数据的键的哈希值,并映射到相同的圆上。
  • 3.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值