如何使 RabbitMQ 具有可扩展性?

How to make RabbitMQ scalable?

我尝试测试了RabbitMQ,但是我发现rabbitmq有一些问题: 如果我创建了一个包含 3 个节点的集群,我不能 publish/delivered 超过 6000/s。 另一方面,如果我使用一个节点,我可以 publish/delivery 直到 25000/s。 这意味着,我添加的节点越多,性能就越差。

但是从这篇文章中:https://blog.pivotal.io/pivotal/products/rabbitmq-hits-one-million-messages-per-second-on-google-compute-engine

他们可以发布超过 100 万,那么他们怎么做到的呢? 我想让 RabbitMQ 每秒处理超过 100 万条消息

这可能取决于其他因素,例如您的网络或硬件性能。

阅读基准测试时始终考虑测试周围的环境

关于如何改进性能,如果这是限制因素,您可以改进硬件或网络。

考虑切换到 SSD 或在您的网络上使用 link 聚合将是一个好的开始。

我通过添加负载均衡器解决了这个问题。 生产者将数据发送到负载均衡器。另一方面,负载均衡器 id 连接到 rabbitmq 的许多节点,但这些节点之间没有连接(以避免影响性能的同步)。 所以通过这种方式,我可以增加吞吐量(例如:3 个节点 = 3 倍吞吐量)。

this test of RabbitMQ performance中,作者得出结论,小型集群的性能将低于单节点集群。需要添加更多节点以提高性能。当您考虑分布式系统中复制所需的开销时,这是有道理的,特别是考虑到 RabbitMQ 关注的是可靠性。

blog post by RabbitMQ中提到了以下内容:

If you use quorum queues or mirrored queues, then each message will be delivered to multiple brokers. If you have a cluster of three brokers and quorum queues with a replicator factor of 3, then every broker will receive every message. In that case, we’ve created a cluster for redundancy only. But we can also create larger clusters for scalability. We could have a cluster of 9 brokers, with quorum queues with a rep factor of 3 and now we’ve spread that load out and can handle a much larger total throughput.