Nats#

Nats Core#

Нужно дописывать это решение под себя, так как это только core

Nats - Jetstream#

По факту используется большинством, для запуска требуется 2+ реплики

Stream#

  • Создается stream

    • Создаешь топики

    • Выбираешь тип хранения данных

      • В памяти
      • На диске
    • Указываешь ретеншн полики

      • По времени сообщения
      • По количеству общих сообщений
      • По общему количеству байт

Consumers#

  • Создается consumer

    • Выбираешь паттерн взаимодействия

      • Pub / Sub

        • Идет разделение между отправителем и получателем. Отправитель может не знать кто получатель. И более того, отправитель после отправки и получения АСК, не ждёт ничего.
          • Плюсы
            • Независимостб
            • Масштабируемость
            • Гибкость
      • Request / Reply

        • Клиент отправляет запрос в котором есть пометка “ответить клиенту” и ждёт ответа от сервиса.
          • Плюсы
            • Синхронность операций
            • Прямая обработка ответов
            • Простота
            • Скорость
      • Queuing

        • По сути это Loadbalancing только бэкэндом выступает очередь в которую входит группа из получателей.
          • Плюсы
            • Высокая отказоустойчивость
            • Оптимальное использование ресурсов
            • Равномерная нагрузка на каждый сервис
    • Выбираешь паттерн доставки

      • Push_Based Consumer
        • Натс пушит сообщения как только они становятся доступными для отправки
          • Pub_Sub
          • Request / Reply
          • Queuing
      • Pull_Based Consumer
        • Consumer сам запрашивает сообщения когда это ему становится нужным
          • Pub_Sub
          • Queuing