JetStream

Бесплатно
Открытый исходный код
Windows
macOS
Linux

Сайт: docs.nats.io/jetstream

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

Архитектурно JetStream реализует понятия потоков (streams), потребителей (consumers) и сообщений, комбинируя в себе особенности очередей, стриминговых платформ и простого ключ-значение хранилища для метаданных. Платформа поддерживает репликацию данных, ретеншн-политики по времени и объёму, а также механизмы реплея для повторного проигрывания сообщений. Благодаря тесной интеграции с ядром NATS, JetStream ориентирован на низкую задержку и лёгкую эксплуатацию при сохранении свойств персистентности и согласованности, характерных для систем обмена сообщениями корпоративного уровня.

  • Персистентное хранение: сообщения сохраняются на диск с возможностью настройки ретеншна по времени или объёму и политики удаления.
  • Репликация и отказоустойчивость: поддержка реплик потока для повышения доступности и устойчивости к сбоям узлов.
  • Потребители и модели доставки: поддержка pull- и push-режимов потребления, подтверждений (ack), перезапросов и отложенных повторных доставок.
  • Реплей и позиционирование: возможность повторного воспроизведения сообщений по порядковому номеру, временной метке или маркерам позиции.
  • Управление порядком: гарантии порядка внутри потока при однопоточном потоке сообщений и механизмы контроля при параллельной обработке.
  • Политики ретеншна и лимитов: гибкие настройки хранения: ограничения по размеру, количеству сообщений и времени хранения.
  • Квоты и управление ресурсами: механизмы контроля использования диска и пропускной способности для предотвращения перегрузок.
  • Интеграция с NATS: бесшовная работа в экосистеме NATS, единая модель аутентификации и сетевого взаимодействия.
  • Поддержка транзакций для ключ-значение: простые операции KV для хранения конфигурационных данных и метаданных с версионированием.
  • Управление потребителями: динамическая регистрация, состояние оффсетов и возможности группировки для балансировки нагрузки.
Подробнее