一、哨兵模式
如图所示,需注意问题:
1. 哨兵:zookeeper实现哨兵集群对redis节点健康检查、主从切换
2. 客户端首次请求:首次请求从哨兵集群获取主从节点地址,然后根据查询地址再请求数据
3. 主从切换:主节点down,则从节点升为主节点,旧有主节点恢复后变成从节点,完成主从切换
二、Codis模式
如图所示,需注意问题:
1. Codis集群:转发客户端发来的指令并返回执行结果,是中间件(类似ngnix)
2. Codis:无状态去中心化的中间件,每个Codis维护slot与实例的映射关系,而多个codis通过zookeeper同步映射关系
3. 迁移单位:最小单位是key,将其同步到新redis中,旧的删除且slot减少
三、Cluster模式
如图所示,cluster集群是redis官方默认集群,需注意问题:
1. Cluster与Codis的区别:slot数量不同,cluster为16384;手动迁移
2. slot与节点映射关系维护:每个节点都存着slot与节点映射关系,由节点维护
3. 同步迁移:两个ERROR指令:Moved、Asking(阻塞迁移)
以下是cluster配置参数:
# cluster集群配置
################################ REDIS CLUSTER ###############################
# 开启cluster集群
cluster-enabled yes
# 集群节点配置文件,不可手动修改
cluster-config-file nodes-6384.conf
# 集群节点超时15000s
cluster-node-timeout 15000
# 其他配置
# cluster-replica-validity-factor 10
# cluster-migration-barrier 1
# cluster-require-full-coverage yes
# cluster-replica-no-failover no
# cluster-allow-reads-when-down no