⚡ 高可用 不是玄学,是 多副本 + 自动故障转移 — 让业务永远不卡顿。
很多团队把 Redis 当作缓存神器,但一旦主节点宕机,业务就瞬间雪崩。高可用 就是给 Redis 穿上防弹衣:通过 多副本冗余备份,让系统在主节点故障时秒级切换,读写不中断。下面从架构、压测、持久化、健康等多维度拆解。
主节点 处理写请求,数据实时同步到 从节点;主挂了,从立刻顶上。好比老司机导航,副驾随时接手。
Sentinel 集群监控主从健康,自动选举新主。旧版哨兵有内存风险,目前多用 Sentinel+ 双机热备。
主节点处理 600 读写,从节点各 200;主挂后从节点平滑承担,不会过载。系统自带 均衡机制。
我们模拟每秒 1000 请求,主节点 承担 600 读写,两台 从节点 各 200。主挂后,从节点自动接管,吞吐量维持 90% 以上。实测
理想比例 33:33:33,实际主节点可能略高(如 25:33:42)。这是系统 负载均衡 的自我调节,并非缺陷。
哨兵检测到主节点心跳丢失,毫秒级 发起选举,业务中断仅几秒。监控大屏绿灯闪烁,比闹钟还准时。
双十一压测场景:4 台节点(1主3从),主节点处理 600 req/s,从节点各 200 req/s。主节点宕机后,从节点自动分配读写,总吞吐稳定在 1800 req/s(原 2000)。
⚡ 关键指标:写入吞吐维持在 90% 以上,资源争抢几乎为 0。
旧版哨兵在内存不足时会清空数据,导致全服不可用。目前主流选择 Sentinel + 双机热备 或 Redis Cluster。上层 Nginx 感知故障后自动切流,业务无感。
健康检查是核心:集群不断检测节点“肺活量”。若某节点忙到喘不过气,主节点会将其暂时移出健康列表,避免连锁故障。
从节点挂了,主节点根据 AOF/RDB 恢复数据。每秒刷盘一次,进程重启数据不丢。
我们曾在双十一前夕加了两台从节点,主节点处理 600 读写,从节点各 200。主节点挂了后,系统自动把读请求分派给从节点,写请求分派给另一个从节点。从节点总共处理 400 个业务请求,没有抢走主节点剩余的 600。这就是 高可用 的负载均衡精髓。
写操作:单主模式下只能写一个节点;哨兵模式下可通过 switch 命令让主节点处理读,从节点承担少量写。分工明确,团队作战。
每秒刷盘 1 次,进程重启后通过日志恢复数据。高可用不只是存储,更是 数据恢复能力。
定期生成全量快照,结合 AOF 提供更可靠的恢复。从节点挂了,主节点根据快照 + 日志补全数据。
数据持久化 是高可用的基石。即使从节点宕机,主节点也能依据 AOF 日志 把数据恢复过来。我们设定每秒刷 1 次磁盘,兼顾性能与安全。
Redis 集群会不断检查自己的“肺活量”。如果某台机器忙到喘不过气或停止写入,主节点会将其从健康名单中摘除。若主节点挂了,系统启动选举,毫秒级 选出新主节点。业务中断仅几秒,实际是心跳丢失的响应时间。
旧版哨兵在内存不足时会清空数据,因此目前团队倾向 Sentinel + 双机热备 或 软件栈。Redis 挂了,Nginx 感知并自动切流到备用队列,业务无感。
Redis 高可用 就是给系统穿防弹衣、配对讲机。以前靠运气,现在靠机制。不保证永远不崩,但保证崩了能迅速恢复,让业务不卡不停摆。从 主从复制 到 哨兵模式,再到 多副本集群,每一步都让 Redis 更健壮。