2016-04-21 5 views
0

Я хочу построить систему RabbitMQ, которая может масштабироваться ради производительности.Является ли RabbitMQ Clustering, включая масштабируемость?

Я прошел официальный документ кластера RabbitMQ. Однако его кластеризация, похоже, не поддерживает масштабируемость. Это потому, что только через главную очередь мы можем публиковать/потреблять, даже если главная очередь доступна из любого узла кластера. Помимо узла, на котором находится главная очередь, мы не можем обрабатывать публикацию/потребление.

Почему мы кластеры?

+0

Я resovled этой проблемы, используя loadbalancer взгляда: http://stackoverflow.com/questions/36650061/how-to-make-rabbitmq-scalable/36747717#36747717 –

ответ

0

Почему мы собираемся тогда?

  • Для обеспечения доступности.
  • Для обеспечения репликации данных.
  • Распространение нагрузки/данных по очередям на разных узлах. Мастер-очереди могут храниться на разных узлах и реплицироваться с коэффициентом < количеством узлов кластера.

Другой, чем узел, на котором находится мастер очередь, мы не можем обработать любой публикации/потреблять.

Клиент может быть подключен к любому узлу кластера. Этот узел будет передавать «запрос» узлу главной очереди и наоборот. В качестве недостатка он будет генерировать дополнительный прыжок.

+0

Для повышения пропускной способности, может оригинальные копии данных, которые являются логически предполагается, что он находится в одной очереди, распределяется по нескольким узлам? Это то, что вы говорите? Кстати, спасибо за ваши добрые ответы. – choiapril

+0

Вы можете достичь некоторой балансировки нагрузки, используя [федеративную очередь] (https://www.rabbitmq.com/federated-queues.html). Вы также можете добиться балансировки нагрузки на стороне клиента: производители публикуют сообщения в обмен с суффиксом ключа маршрутизации, который вращается в соответствии с коэффициентом балансировки нагрузки (например, key.0, key.1, key.0 .... для двух очереди). На стороне сервера вы привязываете эти две очереди к этому обмену, используя ключ привязки 'key.0' и' key.1'. Эти очереди управляются двумя выделенными узлами. Потребители потребляют из этих двух очередей .... –

+0

Итак, хотя узел, который имеет дело с запросом, зеркалируется и является подчиненным, запрос направляется в главную очередь, правильно? – choiapril

0

Ответьте на вопрос в заголовке Is RabbitMQ Clustering including scalability too? - да, это достигается простым добавлением узлов/удалением некоторых узлов в/из кластера. Конечно, вы должны рассмотреть высокую доступность - это очереди и обмен зеркалирование и т.д.
И только кое-что прояснить в отношении:

Однако его кластеризация, кажется, не поддерживает масштабируемость. Это , потому что только через главную очередь мы можем публиковать/потреблять, хотя главная очередь доступна из любого узла кластера.

Публикация делается для обмена, очереди не имеют ничего общего с публикацией. Публикационный клиент публикует только обмен и ключ маршрутизации. Он не нуждается в каких-либо знаниях о очереди.