RabbitMQ Quorum Queue - данные записываются / доставляются только одним узлом? - PullRequest
0 голосов
/ 23 марта 2020

В кластере RabbitMQ Quorum Queue (с использованием плот), скажем, 4 узла (N1-N4),

Могу ли я иметь потребителя, который может читать только из N1 / N2? В этом случае, будет ли сообщение, созданное в N3, доставляться потребителю через N1 / N2?

В соответствии с документацией, приведенной ниже: https://www.cloudamqp.com/blog/2019-04-03-quorum-queues-internals-a-deep-dive.html

С Плотом все читают и пишут go через лидера, чья работа - копировать записи его последователям. Когда клиент пытается прочитать / записать подписчика, ему сообщают, кто является лидером, и просят отправить все записи на этот узел. Ведущий подтвердит запись клиенту только после того, как кворум узлов подтвердит, что они записали данные на диск. Кворум - это просто большинство узлов

Если это так, как можно добиться масштабирования, если всю работу будет выполнять только узел-лидер?

1 Ответ

0 голосов
/ 17 апреля 2020

Прежде всего, кластеры RabbitMQ должны иметь нечетное количество узлов, чтобы всегда можно было установить большинство в случае сетевого раздела.

Потребители всегда могут читать с любого узла в кластере RabbitMQ. Если мастер / зеркало очереди не работает на узле, к которому подключен потребитель, связь будет перенаправлена ​​на другой узел.

Как может быть достигнуто масштабирование, если будет использоваться только узел-лидер? делать всю работу?

«масштабирование» настолько не определено c слово, что я не решаюсь ответить на этот вопрос. Но я предполагаю, что вы спрашиваете, что происходит с несколькими очередями кворума. Ответ заключается в том, что у каждой очереди есть собственный лидер, и эти лидеры распределены по кластеру.


ПРИМЕЧАНИЕ: команда RabbitMQ контролирует rabbitmq-users список рассылки и только иногда отвечает на вопросы по StackOverflow.

...