RabbitMQ 集群是否也包括可扩展性?

Is RabbitMQ Clustering including scalability too?

我想构建一个 RabbitMQ 系统,为了性能能够横向扩展。

RabbitMQ Clustering的官方文档我已经看过了。但是,它的集群似乎不支持可伸缩性。这是因为只有通过主队列我们才能 publish/consume,即使主队列可以从集群的任何节点访问。除了主队列所在的节点,我们无法处理任何 publish/consume.

那我们为什么要聚类?

Why do we cluster then?

  • 确保可用性。
  • 强制执行数据复制。
  • 将 load/data 分散到不同节点上的队列中。主队列可以存储在不同的节点上,并使用<集群节点数的因子进行复制。

Other than the node on which a master queue resides, we can't process any publish/consume.

客户端可以连接到集群的任何节点上。该节点会将 'the request' 传输到主队列节点,反之亦然。作为一个缺点,它会产生额外的跃点。

标题中问题的答案 Is RabbitMQ Clustering including scalability too? - 是的,这是通过简单地添加更多 nodes/removing 一些节点 to/from 集群来实现的。当然你必须考虑高可用性 - 即queue和交换镜像等。
并澄清一下:

However, its clustering doesn't seem to support scalability. That's because only through master queue we can publish/consume, even though the master queue is reachable from any node of a cluster.

发布是为了交流,queue与发布无关。发布客户端仅发布到交换器和路由键。它不需要任何关于 queue 的知识。