Отправляются ли опубликованные сообщения на все узлы в кластере NATS? Или только узлам с локальными Подписчиками на тему сообщения?

#nats.io

Вопрос:

Допустим, у меня есть простой 2-серверный кластер NATS с серверами A и B.

Если клиент на Сервере A публикует сообщение Субъекту, для которого на Сервере B нет подписчиков, по-прежнему ли это сообщение отправляется с Сервера A на Сервер B?

Комментарии:

1. Не могли бы вы, пожалуйста, добавить еще несколько деталей?

Ответ №1:

Не уверен, какова здесь цель, но более подробная информация может помочь прояснить контекст. Если вы конкретно спрашиваете, могут ли узлы передавать сообщения, опубликованные на другом сервере, подписанному клиенту, да.. как долго это продлится? В зависимости от определенного времени истечения срока действия.. что делать, если сервер выйдет из строя до того, как он разделится с сеткой, почти невозможно, но может произойти.

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

Ответ №2:

Да. Кластерные серверы NATS будут пересылать сообщения, полученные от клиента, непосредственно соседним экземплярам nats-сервера, к которым у них есть маршруты. Сообщения, полученные с маршрута, будут распространяться только среди локальных клиентов. В сетке нет проверок подписчиков.

Ответ №3:

Это не черно-белый ответ, потому что NATS поддерживает множество архитектур развертывания с связью между сервером и клиентом, связью между кластерами серверов и связью между кластерами через шлюзы для формирования суперкластеров. Шлюзы, например, оптимизируют распространение графа интересов (т. Е. Отправляют данные только в другие кластеры, если есть интерес) Суперкластер с документацией о шлюзах