Redis 哨兵机制深度解析
候选人小李在美团 P7 架构面中,面试官问:
"Redis 主从集群如果主库挂了,怎么自动恢复?"
小李说:"用哨兵,哨兵会检测主库状态。"
面试官追问:"哨兵是怎么检测的?主观下线还是客观下线?"
小李说:"好像是...多数哨兵同意就客观下线?"
面试官继续追问:"那主库恢复后是怎么变成从库的?"
小李答不上来了。
【面试官心理】 这道题我用来测试候选人对 Redis 高可用方案的理解深度。能说出哨兵作用的占 60%,能讲清主观下线和客观下线的占 20%,能说清完整故障转移流程的占 10%。
一、哨兵架构 🔴
1.1 哨兵的作用
1.2 架构图
1.3 为什么需要多个哨兵
二、下线检测机制 🔴
2.1 主观下线(SDOWN)
2.2 客观下线(ODOWN)
2.3 故障转移触发条件
三、故障转移流程 🟡
3.1 选举领头哨兵
3.2 选择新主库
3.3 故障转移步骤
3.4 并行同步数量
四、哨兵配置 🟡
4.1 哨兵配置文件
4.2 启动哨兵
4.3 查看哨兵状态
五、客户端连接 🟡
5.1 Jedis 连接哨兵
5.2 Spring Boot 配置
六、常见问题 🟡
6.1 脑裂问题
6.2 故障转移时间
⚠️
哨兵的故障转移时间较长,不适合对延迟要求极高的场景。需要更快的故障转移可以考虑 Redis Cluster 或 ProxySQL + Keepalived。
【面试官心理】
能说出"脑裂问题"和 min-replicas-to-write 配置的候选人,基本都有实际运维经验。这是 P6+ 的水准。