Это старая версия документа!
Брокер сообщений. Состоит сервера, клиентской библиотеки и есть еще коннектор
Для подключения нового узла в кластер, достаточно ему указать адрес любого другого узла этого кластера, он получит всю топологию и определит живые/мертвые узлы.
Сообщения группируются по темам и каждый узел знает какие узлы имеют живых подписчиков и на какие темы.
Все сообщения в кластере доставляются напрямую от отправителя получателю, без промежуточных шагов. Nats не записывает сообщения на диск
Клиенты знают всю топологию кластера, поэтому способны сами переподключаться при потери связи
NATS & NATS Streaming
NATS реализует базовую модель «публикации/подписки» в то время как Streaming предоставляет более расширенные варианты. Потоковая передача по прежнему взаимодействует через клиента, работает по такой же форме (?)
Авторизация поддерживается как по логину/паролю так и по токену. Есть настройка разрешений подписки/публикации
Для настройки кластера нужно добавить параметры в файл конфигурации каждого хоста, к каждому можно настроить метод аутентификации
cluster { host: '0.0.0.0' port: 7248 routes = [ nats-route://192.168.59.103:7244 nats-route://192.168.59.103:7246 ] }
При активном соединении работает «Ping/Pong», параметризовано вроде
Размер сообщения ограничен 1M
Мониторинг
Для мониторинга предусмотрен аргумент запуска «-m your_port», очень простая, для более расширенного варианта есть утилита «nats-top»
Базовый функционал
Обеспечивает высокую эффективность (но согласованность не гарантируется)
Полезно для данных не критичных к своевременности и согласованности
# Client port port: 4222 # HTTP monitoring port monitor_port: 4223 # Пользователь authorization { users = [ {пользователь: << имя пользователя1>>, пароль: << пароль1>>} ] timeout: 1 } # This is for clustering multiple servers together. cluster { # Интерфейс кластера port: 4224 # Аутентификация кластерной ссылки authorization { пользователь: << имя пользователя2>> пароль: << пароль2>> timeout: 0.75 } # Информация о кластере routes = [ nats-route:// << имя пользователя 2 >>: << пароль 2 >> @ nats-1: 4224 nats-route:// << имя пользователя 2 >>: << пароль 2 >> @ nats-2: 4224 ] }
Потоковая передача
Обеспечивает гарантию согласованности. Методы типа ACK и «гарантия минимум одного прохода» помогают в этом
Вроде как можно развернуть на основе обычного кластера, из примера выше
# NATS Streaming specific configuration streaming { id: stan-cluster store: file dir: store nats_server_url: «<< адрес кластера NATS >>» # Необходимо только указать имя кластера и имя узла для достижения пользовательского обнаружения cluster { node_id: "stan-1" peers: ["stan-2", "stan-3"] } }