中间件高可用盘点:MySQL、Redis、RocketMQ 与网关
2026/8/24大约 3 分钟
亿级规模系统系列 · 阶段 6 · 高可用 · 第 36/49 篇 · 🚧 占位待学
上一篇:《冗余与故障转移:无状态与有状态的不同打法》
下一篇:《同城双活与异地多活:单元化入门》
学习大纲:《QPS 过万与亿级消息系统设计学习总纲》
状态:待学习。 本文为占位文档:知识点清单、实验与验收标准已就绪,正文待按「先学习、先实验、再撰写」补全。
对应总纲单元:阶段 6 · 单元 6.3
一、本文要解决的问题
每个中间件的高可用姿势都不一样:MySQL 靠主从复制、Redis 靠哨兵或集群分片、RocketMQ 靠多副本 DLedger、Kafka 靠 ISR 多副本——混着背必然答错。但拆开看,它们都在回答同一组问题:冗余多少、谁做主、怎么切换、丢多少数据。
二、知识点清单
- MySQL:主从复制(异步 / 半同步)+ 编排器切换(Orchestrator / MHA);MGR 的多数派路线
- Redis:哨兵(监控 + 仲裁 + 切换)vs Cluster(分片 + 每个 slot 主从),故障检测与选举的时长量级
- RocketMQ:主从同步复制 vs DLedger(Raft 自动切换);刷盘与复制的 RPO 组合
- Kafka:min.insync.replicas 与 acks=all 的配合,ISR 收缩与 unclean 选举的丢数据风险
- 网关与注册中心:网关自身集群化(keepalived / 多层 LB)、注册中心(Nacos 集群)的 HA
- 共同模式总结:冗余副本 + 故障检测 + 仲裁决策 + 自动切换 + 客户端重试——一切 HA 方案的骨架
三、动手实验(学习时必须真跑)
- 复用已有 WSL 集群环境(或 Docker 新搭):Redis Cluster 3 主 3 从,kill 一个主节点,记录自动故障转移时间线(检测 → 选举 → 提升 → 客户端恢复)
- RocketMQ 主从(或 DLedger)集群 kill 主,观察生产可用性恢复与消息不丢
- 汇总实验数据填「中间件 × HA 方案 × 切换时间 × 丢数据风险」对照表
四、验收标准(全部通过才进入下一篇)
五、写作提示(补正文时遵守)
- 开篇问题驱动;结构走「是什么 → 为什么 → 怎么做 → 背景知识」
- 所有代码、命令、输出必须先在本机跑通再写入,不得杜撰
- 版本口径以总纲环境清单为准(Spring Boot 3.x / MySQL 8.0 / Redis 8.x / RocketMQ 5.3.x / Kafka 4.3 / ShardingSphere 5.5.3)
- 涉及版本敏感结论时标注出处与时间
本篇完成后,把文首导航块的「🚧 占位待学」去掉,并在总纲处打卡。