(一)什么是Redis Cluster?
Redis Cluster是Redis的分布式解决方案,在Redis 3.0版本正式推出的,有效解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构达到负载均衡的目的。
- Redis使用中遇到的瓶颈
我们日常在对于redis的使用中,经常会遇到一些问题:
(1)高可用问题,如何保证redis的持续高可用性。
(2)容量问题,单实例redis内存无法无限扩充,达到32G后就进入了64位世界,性能下降。
(3)并发性能问题,redis号称单实例10万并发,但也是有尽头的。
- Redis-Cluster的优势
(1)官方推荐,毋庸置疑。
(2)去中心化,集群最大可增加1000个节点,性能随节点增加而线性扩展。
(3)管理方便,后续可自行增加或摘除节点,移动分槽等等。
(4)简单,易上手。
(二)数据分布理论与Redis的数据分区
- 分布式数据库首要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整个数据的一个子集。常见的分区规则有哈希分区和顺序分区。Redis Cluster采用哈希分区规则。
- 虚拟槽分区巧妙地使用了哈希空间,使用分散度良好的哈希函数把所有的数据映射到一个固定范围内的整数集合,整数定义为槽(slot)。比如:Redis Cluster槽的范围是0 ~ 16383。槽是集群内数据管理和迁移的基本单位。
- Redis Cluster采用虚拟槽分区,所有的键根据哈希函数映射到0 ~ 16383,计算公式:slot = CRC16(key)&16383。每一个节点负责维护一部分槽以及槽所映射的键值数据。
(三)Redis Cluster的体系架构
我们以6个节点为例,来介绍Redis Cluster的体系架构,如下图所示。其中:三个为master节点,另外三个为slave节点。