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

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

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

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

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

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

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

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

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

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

相关推荐
DKunYu1 天前
3.负载均衡-LoadBalance
java·运维·spring cloud·微服务·负载均衡
机灵猫1 天前
OpenFeign 声明式客户端的动态代理与 LoadBalancer 负载均衡策略
运维·负载均衡
猫豆~1 天前
Nginx代理负载均衡——3day
运维·nginx·负载均衡
Q的世界1 天前
nginx反向代理负载均衡tomcat多实例
运维·nginx·负载均衡
楠枬4 天前
负载均衡 -LoadBalance
后端·spring·spring cloud·负载均衡
卓码软件测评5 天前
第三方软件验收评测机构【Gatling安装指南:Java环境配置和IDE插件安装】
java·开发语言·ide·测试工具·负载均衡
虎头金猫7 天前
openEuler 22.03 LTS 时序数据库实战:InfluxDB 深度性能评测与优化指南
网络·数据库·python·网络协议·tcp/ip·负载均衡·时序数据库
邪恶喵喵7 天前
nginx反向代理和负载均衡
运维·nginx·负载均衡
AI 搜索引擎技术7 天前
智能电网中的AI Agent负载均衡
运维·人工智能·ai·负载均衡
码农阿豪7 天前
深入解析负载均衡:四层(L4)与七层(L7)的核心区别与实践指南
负载均衡·协议·lb