欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 第十一章 分布式存储之哈希算法

第十一章 分布式存储之哈希算法

2024/10/25 16:19:57 来源:https://blog.csdn.net/qushaming/article/details/142601004  浏览:    关键词:第十一章 分布式存储之哈希算法

目录

一、哈希取余分区

二、一致性哈希算法分区

三、哈希槽分区


在学习通过Docker进行Redis集群部署之前,简单聊一点Redis分布式集群存储相关的哈希算法问题:

一、哈希取余分区

2亿条记录就是2亿个KV,我们单机不行必须要分布式多机,假设有3台机器构成一个集群,用户每次读写操作都是根据公式:hash(key)%N个机器台数,计算出哈希值,用来决定数据映射到哪一台节点上。

优点:

1. 简单且易于理解和实现。

2. 在节点数量变化时(节点增加或减少),只需重新分配少数键。

缺点:

如果节点数量变化较大,某些个节点挂了,则可能会导致数据分布不均、数据倾斜,即一个节点负责过多的键,最终造成系统故障。

二、一致性哈希算法分区

3大步骤:

1. 算法构建一致性哈希环

2. 服务器IP节点或主机名映射

3. key落到服务器的落键规则

优点:

1. 一致性哈希算法的容错性

2. 一致性哈希算法的扩展性

即加入和删除节点只影响哈希环中顺时针方向的相邻的节点,对其他节点无影响。

缺点:

1. 一致性哈希算法的数据倾斜性 

即数据的分布和节点的位置有关,因为这些节点不是均匀分布在哈希环上的,所以数据在进行存储时达不到均匀分布的效果,同时对于节点数量特别少的分布式集群非常不实用。

从下图这个哈希环可以看出,数据分布到A的概率比B的概率大的多: 

三、哈希槽分区

哈希槽分区是在一致性哈希算法分区上进行了优化,Redis 集群采用了一致性哈希算法来分配数据到不同的节点,保证了数据分布的均匀性。每个 key 通过计算哈希值后被映射到对应的节点。在 Redis 集群中,每个节点负责维护自己哈希槽的信息。每个节点负责维护一部分哈希槽,当集群中的节点增加或减少时,节点间的哈希槽也会相应地调整。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com