负载均衡之一致性哈希算法详解

负载均衡之一致性哈希算法详解

传统的哈希是直接把数据映射到对应的hash表上,但是当我们的数据量很大的时候,我们会采用多个hash节点来存储的方式来减少存储压力。

但是这种hash算法下,如果我们的节点发生了增加或减少的时候,我们就需要将所有数据,重新建立映射关系,这会导致大量的数据迁移和重新映射的问题。

而一致性hash算法就可以优化这些问题。

首先,一致性hash算法是将所有的数据全部映射到一个大小为0-2的32次方-1的环中(hash环存储)

然后,我们可以将我们服务的地址,映射到这个环上。

此时,当我们的数据来了以后,我们还是先将key通过hash计算放到我们的环上,然后我们看key沿顺时针 遇到的第一个节点,我们就将其放入该节点。

节点如果宕机了,可以zookeeper可以利用心跳检测功能,判断服务是否断开,从而移除相关节点,在zookeeper中移除后,我们需要在我们的hash环中也移除节点,假设我们移除了节点1,那么此时,我们只需要对一个数据进行重新映射即可。

同理添加节点也很方便,我们可以在node3和node1之间新增一个节点4,这样只会影响node3和node1这个区间的数据。

相关推荐
抛物线.3 天前
Docker Compose 部署高可用 MongoDB 副本集集群(含 Keepalived + HAProxy 负载均衡)
mongodb·docker·负载均衡
ZNineSun3 天前
什么是负载均衡,有哪些常见算法?
负载均衡·osi·七层网络模型
竹竿袅袅4 天前
Nginx 反向代理与负载均衡架构
nginx·架构·负载均衡
运维行者_5 天前
多数据中心运维:别让 “分布式” 变成 “混乱式”
运维·数据库·分布式·测试工具·自动化·负载均衡·故障告警
前端世界8 天前
鸿蒙系统下的动态负载均衡实战:让分布式任务调度更智能
分布式·负载均衡·harmonyos
千码君20169 天前
计算机网络:什么是任播
计算机网络·负载均衡·ddos·cdn·dns·任播·智能路由
石小千9 天前
Nginx服务做负载均衡网关
运维·nginx·负载均衡
你我约定有三10 天前
分布式微服务--Nacos作为配置中心(二)
java·分布式·spring cloud·微服务·架构·wpf·负载均衡
孙克旭_12 天前
day064-kodbox接入对象存储与配置负载均衡
linux·运维·阿里云·负载均衡
你我约定有三12 天前
分布式微服务--万字详解 微服务的各种负载均衡全场景以注意点
java·开发语言·windows·分布式·微服务·架构·负载均衡