docs(high-concurrency): recommend Quorum Queues (#332)

This commit is contained in:
Senrian
2026-03-30 14:40:12 +08:00
committed by GitHub
parent 1d028e8594
commit 255639d1a2

View File

@@ -48,6 +48,36 @@ RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模
这样的话,好处在于,你任何一个机器宕机了,没事儿,其它机器(节点)还包含了这个 queue 的完整数据,别的 consumer 都可以到其它节点上去消费数据。坏处在于,第一,这个性能开销也太大了吧,消息需要同步到所有机器上,导致网络带宽压力和消耗很重!第二,这么玩儿,不是分布式的,就**没有扩展性可言**了,如果某个 queue 负载很重,你加机器,新增的机器也包含了这个 queue 的所有数据,并**没有办法线性扩展**你的 queue。你想如果这个 queue 的数据量很大,大到这个机器上的容量无法容纳了,此时该怎么办呢?
#### Quorum Queues仲裁队列推荐
从 RabbitMQ 3.8 版本开始,引入了 Quorum Queues仲裁队列作为新的高可用解决方案旨在替代传统的镜像集群模式。
**核心原理**:基于 Raft 共识算法Quorum Queues 在多个节点之间通过 quorum 复制实现数据一致性。
**主要优势**
- **数据一致性**:基于 Raft 算法,保证消息在 quorum 多数节点确认后才算写入成功
- **自动故障转移**leader 节点宕机后,自动重新选举,无需手动干预
- **线性扩展**:可以独立扩展副本数量,不受单节点容量限制
- **持久化优化**:支持段式存储,滚动刷新时性能更优
**配置示例**
```bash
rabbitmqctl set_policy ha-quorum "^quorum\." '{"ha-mode":" quorum"}'
```
**适用场景**
- 对数据可靠性要求高的生产环境
- 需要更好扩展性的分布式部署
- 替代传统镜像集群模式的升级路径
**注意事项**
- Quorum Queues 仅支持持久化消息persistent不适用于临时队列
- 资源消耗高于普通队列,需合理规划节点数量
- 最低需要 3 节点才能形成有效的 quorum
**迁移建议**:对于现有使用镜像集群的队列,建议逐步迁移到 Quorum Queues。迁移过程中需注意消息持久化配置和消费者兼容性。
### Kafka 的高可用性
Kafka 一个最基本的架构认识:由多个 broker 组成,每个 broker 是一个节点;你创建一个 topic这个 topic 可以划分为多个 partition每个 partition 可以存在于不同的 broker 上,每个 partition 就放一部分数据。