Skip to content

Commit 255639d

Browse files
authored
docs(high-concurrency): recommend Quorum Queues (#332)
1 parent 1d028e8 commit 255639d

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

docs/high-concurrency/how-to-ensure-high-availability-of-message-queues.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,36 @@ RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模
4848

4949
这样的话,好处在于,你任何一个机器宕机了,没事儿,其它机器(节点)还包含了这个 queue 的完整数据,别的 consumer 都可以到其它节点上去消费数据。坏处在于,第一,这个性能开销也太大了吧,消息需要同步到所有机器上,导致网络带宽压力和消耗很重!第二,这么玩儿,不是分布式的,就**没有扩展性可言**了,如果某个 queue 负载很重,你加机器,新增的机器也包含了这个 queue 的所有数据,并**没有办法线性扩展**你的 queue。你想,如果这个 queue 的数据量很大,大到这个机器上的容量无法容纳了,此时该怎么办呢?
5050

51+
52+
#### Quorum Queues(仲裁队列,推荐)
53+
54+
从 RabbitMQ 3.8 版本开始,引入了 Quorum Queues(仲裁队列)作为新的高可用解决方案,旨在替代传统的镜像集群模式。
55+
56+
**核心原理**:基于 Raft 共识算法,Quorum Queues 在多个节点之间通过 quorum 复制实现数据一致性。
57+
58+
**主要优势**
59+
- **数据一致性**:基于 Raft 算法,保证消息在 quorum 多数节点确认后才算写入成功
60+
- **自动故障转移**:leader 节点宕机后,自动重新选举,无需手动干预
61+
- **线性扩展**:可以独立扩展副本数量,不受单节点容量限制
62+
- **持久化优化**:支持段式存储,滚动刷新时性能更优
63+
64+
**配置示例**
65+
```bash
66+
rabbitmqctl set_policy ha-quorum "^quorum\." '{"ha-mode":" quorum"}'
67+
```
68+
69+
**适用场景**
70+
- 对数据可靠性要求高的生产环境
71+
- 需要更好扩展性的分布式部署
72+
- 替代传统镜像集群模式的升级路径
73+
74+
**注意事项**
75+
- Quorum Queues 仅支持持久化消息(persistent),不适用于临时队列
76+
- 资源消耗高于普通队列,需合理规划节点数量
77+
- 最低需要 3 节点才能形成有效的 quorum
78+
79+
**迁移建议**:对于现有使用镜像集群的队列,建议逐步迁移到 Quorum Queues。迁移过程中需注意消息持久化配置和消费者兼容性。
80+
5181
### Kafka 的高可用性
5282

5383
Kafka 一个最基本的架构认识:由多个 broker 组成,每个 broker 是一个节点;你创建一个 topic,这个 topic 可以划分为多个 partition,每个 partition 可以存在于不同的 broker 上,每个 partition 就放一部分数据。

0 commit comments

Comments
 (0)