Главная
|
Услуги и цены
VDS
Выделенные серверы
Размещение сервера
|
F.A.Q
|
О компании
|

Установка NATS на Ubuntu

  • 1. Подготовка сервера
  • 2. Установка curl
  • 3. Скачивание и установка NATS
  • 4. Пример работы NATS
  • 5. Подготовка Python-клиента
  • 6. Producer (API сервис)
  • 7. Consumer (payment-worker)
  • 8. Запуск системы
  • 9. Результат работы
  • 10. Что важно заметить
  • 11. Итог

NATS — это лёгкий и быстрый брокер сообщений, который часто используют в микросервисах и системах с высокой нагрузкой. Он не перегружен лишними функциями, запускается за секунды и почти не требует настройки.

В этой инструкции разберём установку NATS на Ubuntu, настройку сервиса и базовую проверку работы.

Подготовка сервера

Если вы только купили сервер:
Подключитесь к серверу
Выполните подготовку сервера к работе

Установка curl

Установите curl, если его нет.

    sudo apt update
sudo apt install curl -y
    

Установка NATS

Перейдём в каталог /tmp, чтобы не засорять систему временными файлами:

    cd /tmp
    

Теперь загрузим последнюю версию NATS:

    apt install nats-server
    
    nats-server -v
    
Проверка версии NATS

Проверим статус службы:

    sudo systemctl status nats-server
    
Проверка службы NATS

Если всё прошло успешно, вы увидите active (running).

Пример работы NATS

Чтобы понять, зачем NATS используется в реальных системах, соберём простой сценарий.

Есть два независимых сервиса:

  • API-сервис создаёт заказ
  • Worker обрабатывает оплату

Они не знают друг о друге напрямую. Общение идёт через NATS.

Подготовка Python-клиента

Установим клиент для Python:

    pip install nats-py
    

Нужно установить в виртуальную среду проекта, если у вас её нет, то потребуется создать.

Producer (API сервис)

Создадим файл 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 (payment-worker)

Создадим файл 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())
    
  • сервис подписывается на события
  • затем «зависает» и ждёт сообщения
  • это нормальная модель worker-сервиса

Запуск системы

Открываем два терминала.

Терминал 1 — worker.

    python consumer.py
    

Он начинает слушать события.

Терминал 2 — API.

    python producer.py
    

Результат работы

В терминале worker появится:

    PAYMENT SERVICE RECEIVED: {"id": 123, "user": 42}
    
Пример обмена сообщениями через NATS

Что важно заметить

1. API не знает о worker

Он не делает HTTP-запросов, не ждёт ответа и не зависит от доступности сервиса оплаты.

2. Worker можно масштабировать

Можно запустить 10 копий consumer.py.

NATS сам распределит нагрузку между ними.

3. Если worker выключен

В этом примере сообщение потеряется.

Это нормальное поведение NATS core.

Итог

Установка NATS занимает пару минут, а отдача ощущается сразу, особенно в распределённых системах. Он отлично масштабируется и не требует постоянного внимания.

Если планируете строить очередь сообщений, то это надёжная база, с которой удобно начать.

logo
© 2022 62yun
Все права защищены
vk.com/62yuncom
support@62yun.ru
logo
vk.com/62yuncom
support@62yun.ru
Услуги
VDS Выделенные серверы
Полезное
F.A.Q О компании Политика конфиденциальности Оферта
Способы оплаты
wechatpay visa mastercard
MirAccept
Партнеры
25port
© 2022 62yun Все права защищены
ВВЕРХ