Инструменты пользователя

Инструменты сайта


linux:nats

NATS

Общие сведения

Брокер сообщений. Состоит сервера, клиентской библиотеки и есть еще коннектор
Для подключения нового узла в кластер, достаточно ему указать адрес любого другого узла этого кластера, он получит всю топологию и определит живые/мертвые узлы.
Сообщения группируются по темам и каждый узел знает какие узлы имеют живых подписчиков и на какие темы.
Все сообщения в кластере доставляются напрямую от отправителя получателю, без промежуточных шагов. Nats не записывает сообщения на диск
Клиенты знают всю топологию кластера, поэтому способны сами переподключаться при потери связи
Работает на порту «4222«

NATS & NATS Streaming
NATS реализует базовую модель «публикации/подписки» в то время как Streaming предоставляет более расширенные варианты.
NATS Streaming устаревшее, работало через другой exe, актуальная реализация это JetStream, является надстройкой и встроено в тот же ехе, достаточно запустить с аргументом »-js»

Авторизация поддерживается как по логину/паролю так и по токену. Есть настройка разрешений подписки/публикации

Для настройки кластера нужно добавить параметры в файл конфигурации каждого хоста, к каждому можно настроить метод аутентификации

:!: Образец конфигурации
cluster {
  host: '0.0.0.0'
  port: 7248
 
  routes = [
    nats-route://192.168.59.103:7244
    nats-route://192.168.59.103:7246
  ]
}

Мониторинг Для мониторинга предусмотрен аргумент запуска «-m your_port», очень простая, для более расширенного варианта есть утилита «nats-top»
При активном соединении работает «Ping/Pong», параметризовано вроде

Конфигурация

Указываются порты для хоста и для кластера отдельно и оба работают, видимо и подключения отличаются

:!: Пример конфигурации c tls и кластером
debug:   true
trace:   false
log_file: "c:/path/logs/name.log"
http_port: 8222 # HTTP monitoring port
port: 4222
 
tls {
  cert_file: "c:/path/name.crt"
  key_file: "c:/path/name.key"
  ca_file: "c:/path/rootCA.crt"
}
 
cluster {
  listen: 0.0.0.0:5222
  routes = [
    nats-route://ip-1:5222
    nats-route://ip-2:5222
  ]
  tls {
    cert_file: "c:/path/name.crt"
    key_file:  "c:/path/name.key"
    ca_file:   "c:/path/rootCA.crt"
  }
}

Базовый функционал
Обеспечивает высокую эффективность (но согласованность не гарантируется)
Полезно для данных не критичных к своевременности и согласованности

:!: Пример конфигурации
  # 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 и «гарантия минимум одного прохода» помогают в этом
Вроде как можно развернуть на основе обычного кластера, из примера выше
Исполняемый файл уже содержит в себе данный функционал, для запуска используется аргумент «-js»

:!: Потоковая передача - JetStream

Тот же конфиг, добавляем только одну группу и в параметры запуска тоже добавить- «-js –cluster_name nats-js»

(...)
jetstream {
  store_dir="K:/PF/Nats/data/jetstream"
}
(...)

Установка

Windows

Все предельно просто, есть несколько вариантов: какой то менеджер пакетов «choco», интерпретатор go, и скачать дистрибутив
В последнем случае скачиваем, утилитой «sc» назначаем службой, параметры запуска/конфиги это уже все здесь и опционально
Используя флаги можно запускать на одном хосте несколько экземпляров, после запуска службой можно управлять аргументом «–signal»

sc.exe create nats-server binPath="c:\nats\nats-server.exe --config=c:\nats\app.conf"
sc.exe start nats-server
 
  # REM Reload server configuration (сигналы под вопросом)
nats-server.exe --signal reload
 
  # REM Stop the server
nats-server.exe --signal stop [=<service name>]
:!: CheatSheet
nats cheat
 
 
#############################################
Сохранение параметров в контекст
#############################################
nats context save sys --user sys --password pass
nats context select <name-context>
 
nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream ls
 
nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream add brain_activity_protobuf --config ./stream_configs/brain_activity_protobuf.json
 
 
#############################################
Системная учетка
#############################################
добавить в конфиг 
accounts: {
  $SYS: {
    users: [{user: sys, password: pass}]
  }
}
 
затем в cli:
 
nats --context sys --user sys --password pass server list
 
 
#################################
Удаление хоста из метаданных 
#################################
 
nats server cluster peer-remove RztkeQup
 
*******************************************************************
 
Названия стримов 
	brain.activity.protobuf (альтернатива Ice_AccountsActivity, только на protobuf) 
	brain.control.protobuf (альтернатива Ice_MesControl2ServerApp, только на protobuf).
 
nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream add brain_activity_protobuf --config ./stream_configs/brain_activity_protobuf.json
 
 
nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 --user sys --password pass stream ls
nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream rm brain_activity_protobuf -f
 
nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream add brain_activity_protobuf --config ./stream_configs/brain_activity_protobuf.json
 
nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream add brain_control_protobuf --config ./stream_configs/brain_control_protobuf.json
 
 
 
 
nats --context sys stream ls
 
nats-cli.exe --tlsca=./certs/rootCA.crt --server=168.119.10.29 stream ls
 
nats-cli.exe --tlsca=./certs/rootCA.crt --server=135.181.6.30 stream ls
 
 
linux/nats.txt · Последнее изменение: 2024/07/09 09:45 — admin