现在我正在研究如何提高 Rabbit 的效率。
例如:
成分:
- TCP 负载均衡器
- 生产者
- RabbitMQ 集群
- 消费者
生产商:
2-5 个 EC2 服务器。每个服务器都logstash
安装并配置为向 Rabbit 发送消息。这没什么特别的。只有一个要求,消息需要持久化。(以防 I/O 不是问题)
RabbitMQ 集群:
2 个 EC2 服务器。大量的内存,cpu,良好的磁盘,良好的带宽。
消费者:
非常不同数量的消费者可能是 2-15。消费者连接到负载均衡器 (ELB)。其中一些使用basic.get
其中一些使用basic.consume
。要求:no_ack = False
, 表示所有消息都需要被确认。
现在我们有一个队列可以容纳 95% 的流量。我的问题是:
- 如果我在兔子集群中的每个节点上创建相同数量的队列。(现在我正在谈论如何分配这个高流量队列的负载。)每个生产者都会将消息发布到它自己的队列。另一端的消费者将订阅所有队列并从每个队列中获取消息。它会提高性能吗?
- 交换和队列之间的一对一关系也会对性能产生任何影响吗?
- 最后,在这种情况下你会推荐什么?(消费者不能动态配置)