首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

redis集群(一)数据分布理论

  • 25-03-02 13:43
  • 2549
  • 13586
blog.csdn.net

1.数据分布理论

顺序分区和哈希分区(数据分区是分布式存储的核心)

 哈希分布:

(1)节点取余分区  (2)一致性哈希分区(3)虚拟槽分区(redis cluster采用的方式)

(1)节点取余分区:键的hash值对节点数取余

出现的问题:增加节点时数据偏移,导致数据的前移达到80%

如何避免出现的问题:翻倍扩容可以使数据迁移从80%降到50%

 

(2)一致性哈希:解决了上述取余分区的问题、为系统中每个节点分配一个token,范围一般在0~2的32次方,这些token构成哈希环。数据读写执行节点查找操作时,先根据key计算hash值,然后顺时针找到第一个大于等于该哈希值的token节点。例如,按照顺时针的原则,当key的hash出现在n1和n2之间,则该key就对属于n2;

 

 一致性哈希扩容:当添加节点时,只会影响相邻的节点;(适用于节点较多的情况)

出现的问题:①加减节点会造成哈希环中部分数据无法命中,需要手动处理或者忽略这些数据,常用于缓存场景。因为加入node5之后,原来缓存在node2的部分数据,只能在node5中获取,但是node5没有!

②当使用少量节点时,节点变化将大范围影响哈希环中数据映射,因此不适合少量数据节点的分布式方案。

③普通的一致性哈希分区在增减节点时需要增加一倍或者减少一半,才可以保证数据和负载均衡!

 (3)虚拟槽分区

 虚拟分槽使用良好的哈希函数把所有数据映射到一个固定范围的整数集合中,整数定义为槽(slot)。

这个范围远远大于节点数,比如redisCluster槽的范围是0~16383;

每一个节点负责维护一部分槽以及所映射的键值数据。

 虚拟槽分区的特点:

(1)解耦数据和节点之间的关系,简化了节点扩容和收缩的难度。

(2)节点自身维护槽的映射关系,不需要客户端或者代理服务维护槽分区元数据

(3)支持节点,槽,键之间的映射关系,用于数据路由、在线伸缩等场景。

注:本文转载自blog.csdn.net的黎明De烬的文章"https://blog.csdn.net/qq_27862335/article/details/81771812"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top