Redis Cluster集群实例
DCS Redis Cluster集群实例,是原生Cluster的集群版本。Redis Cluster集群实例的特点:
- 兼容Redis原生Cluster集群。
- 继承smart client的设计方案。
- 相比主备,数倍性能提升。
Redis Cluster集群实例支持从客户端实现读写分离,相关操作请参见Cluster集群实例读写分离。
- Redis版本不支持升级,例如,Redis 4.0 Cluster集群不支持升级为Redis 5.0 Cluster集群实例。如果需要使用高版本Redis Cluster集群实例,建议重新创建高版本Redis Cluster集群实例,然后将原有Redis实例的数据迁移到高版本实例上。
- 客户端连接Redis Cluster集群实例与连接单机、主备、Proxy集群实例的方式不同,具体请参见使用客户端连接Redis。
Cluster集群实例架构
Cluster版Redis集群兼容开源Redis的Cluster,基于smart client和无中心的设计方案,对服务器进行分片。
Cluster版Redis集群每种实例规格对应的分片数,如表1所示。
在创建DCS Cluster集群实例时,可以自定义分片大小。如果不自定义分片大小,使用系统默认分片,每个分片的大小=实例规格/分片数,例如,集群规格为48GB的实例,分片数为6,则每个集群分片的大小为48GB/6=8GB。
集群版规格 |
分片数 |
---|---|
4GB/8GB/16GB/24GB/32GB |
3 |
48GB |
6 |
64GB |
8 |
96GB |
12 |
128GB |
16 |
192GB |
24 |
256GB |
32 |
384GB |
48 |
512GB |
64 |
768GB |
96 |
1024GB |
128 |
2048GB |
128 |
- 无中心架构
Redis Cluster的任意节点都可以接收请求,但节点会将请求发送到正确的节点上执行,同时,每一个节点也是主从结构,默认包含一个主节点和一个从节点,由Redis Cluster根据选举算法决定节点主从属性。
图1 Redis Cluster无中心架构
- 数据预分片
Redis Cluster会预先分配16384个slot,每个Redis的server存储所有slot与redis server的映射关系。key存储在哪个slot中,由Crc16(key) mod 16384的值决定。如下图所示:
图2 Redis Cluster预分片示意图
- Redis Cluster集群的每个分片也是一个Redis主备实例。当分片上的主节点故障时,该分片上的连接会有秒级中断、不可用,备节点在15秒到30秒内自动完成主备切换,单分片故障仅影响该分片上的数据访问,不影响其他分片上的数据访问。
- Redis集群单分片主节点故障时,主备切换完成后,该分片原主节点(已切换为从节点)因故障不会立刻恢复,业务继续访问该分片原主节点会失败,可通过配置Redis SDK解决此类情况,具体请参见使用客户端连接Redis。