NATS — это лёгкий и быстрый брокер сообщений, который часто используют в микросервисах и системах с высокой нагрузкой. Он не перегружен лишними функциями, запускается за секунды и почти не требует настройки.
В этой инструкции разберём установку NATS на Ubuntu, настройку сервиса и базовую проверку работы.
Если вы только купили сервер:
Подключитесь к серверу
Выполните подготовку сервера к работе
Установите curl, если его нет.
sudo apt update
sudo apt install curl -y
Перейдём в каталог /tmp, чтобы не засорять систему временными файлами:
cd /tmp
Теперь загрузим последнюю версию NATS:
apt install nats-server
nats-server -v
Проверим статус службы:
sudo systemctl status nats-server
Если всё прошло успешно, вы увидите active (running).
Чтобы понять, зачем NATS используется в реальных системах, соберём простой сценарий.
Есть два независимых сервиса:
Они не знают друг о друге напрямую. Общение идёт через NATS.
Установим клиент для Python:
pip install nats-py
Нужно установить в виртуальную среду проекта, если у вас её нет, то потребуется создать.
Создадим файл producer.py:
import nats
import asyncio
async def main():
nc = await nats.connect("nats://localhost:4222")
message = '{"id": 123, "user": 42}'
await nc.publish("order.created", message.encode())
await nc.close()
asyncio.run(main())
API не вызывает другие сервисы напрямую.
Он просто публикует событие order.created.
Это снижает связанность системы, сервис не зависит от других компонентов.
Создадим файл consumer.py:
import nats
import asyncio
async def main():
nc = await nats.connect("nats://localhost:4222")
async def handler(msg):
print("PAYMENT SERVICE RECEIVED:", msg.data.decode())
await nc.subscribe("order.created", cb=handler)
await asyncio.Event().wait()
asyncio.run(main())
Открываем два терминала.
Терминал 1 — worker.
python consumer.py
Он начинает слушать события.
Терминал 2 — API.
python producer.py
В терминале worker появится:
PAYMENT SERVICE RECEIVED: {"id": 123, "user": 42}
Он не делает HTTP-запросов, не ждёт ответа и не зависит от доступности сервиса оплаты.
Можно запустить 10 копий consumer.py.
NATS сам распределит нагрузку между ними.
В этом примере сообщение потеряется.
Это нормальное поведение NATS core.
Установка NATS занимает пару минут, а отдача ощущается сразу, особенно в распределённых системах. Он отлично масштабируется и не требует постоянного внимания.
Если планируете строить очередь сообщений, то это надёжная база, с которой удобно начать.