什么是一致性hash算法
什么是一致性hash算法
本文为您带来的是什么是一致性hash算法的教程内容,具体详情如下:
理论
一致性哈希算法是一种常用的分布式算法,其主要用途是在分布式系统中,将数据根据其键(key)进行散列(hash),然后将散列结果映射到环上,再根据数据节点的数量,将环划分为多个区间,每个节点负责处理环上一定区间范围内的数据。
普通哈希的问题
分布式集群中,对机器的添加删除,或者机器故障后自动脱离集群这些操作是集群管理最基本的功能。
如果采用常用的hash(object)%N取模的方式,在节点进行添加或者删除后,需要重新进行迁移改变映射关系,否则可能导致原有的数据无法找到。
举个例子
随着业务和流量的增加,假如我们的Redis查询服务节点扩展到了3个,为了将查询请求进行均衡,每次请求都在相同的Redis中,使用hv = hash(key) % 3的方式计算,对每次查询请求都通过hash值计算,得出来0、1 、2的值分别对应服务节点的编号,计算得到的hv的值就去对应的节点处理。

但是这里有个问题,服务增减是需要对此时的key进行重新计算,比如减少一个服务的时候,此时需要按 hv = hash(key) % 2计算,而增加一个服务节点的时候需要按hv = hash(key) % 4计算,而这种取模基数的变化会改变大部分原来的映射关系,导致数据查询不到。

这个时候只能进行数据迁移,真是太麻烦了,而一致性哈希算法显然是一个更好选择!
一致性hash算法
一致性哈希同样使用了取模的方式,不同的是对 2^32 这个固定的值进行取模运算。
在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对 K/n 个关键字重新映射,其中K是关键字的数量, n是槽位数量,而不需要对所有的映射关系进行重新映射!
Hsh环
我们可以把一致哈希算法是对 2^32 进行取模运算的结果值虚拟成一个圆环,环上的刻度对应一个 0~2^32 – 1 之间的数值,如下图:

节点入环
下图我们三个节点(A/B/C)经过哈希计算,放入下面环中,一般我们会根据服务器的IP或者唯一别名进行哈希计算。
相关阅读
-
网站域名怎么申请注册 服务器域名注册的流程
一篇很详细的教程是关于网站域名怎么申请注册和服务器域名注册的流程IT技巧方面的经验,具体内容如下: .com域名 是商业使用最广域名,.com域名从开始到现在一直是全球使用最为多的顶级
-
steam隐身功能 将影响网站对活跃玩家数量吗
正文核心介绍:将影响网站对活跃玩家数量吗和steam隐身功能方面的内容,下面来一起了解一下吧。 Hello大家好,我是Miss的御用鸡腿IT袋网小编,每日游戏圈新鲜资讯与你分享~ Steam平台在今日
-
数据库管理系统的主要功能有哪些 简述数据库管理系统的技术特点
关于这个数据库管理系统的主要功能有哪些和简述数据库管理系统的技术特点的电脑方面的小经验,下面小编为您详细解答 数据库管理系统 DBMS (Database Management System)主要实现共享数据有效
-
ping丢包率多少算正常 怎么ping命令测试丢包率方法
有时候我们的网络出现故障,在排查的时候就会用到ping命令,但是很多人不清楚 ping丢包率多少算正常? 下面IT袋小编就给大家分享 ping命令测试丢包率 方法,帮助大家搞清楚什么样的丢包情


