Для чистой Markdown-версии этой страницы добавьте .md к этому URL. Полный индекс документации см. в https://docs.nvidia.com/dynamo/llms.txt. Полное содержимое, включая справочник API и примеры SDK, см. в https://docs.nvidia.com/dynamo/llms-full.txt.
Плоскость событий
Плоскость событий предоставляет Dynamo слой pub/sub для обмена событиями между компонентами почти в реальном времени. Она доставляет обновления KV-кэша, метрики нагрузки воркеров и события отслеживания последовательностей, обеспечивая такие возможности, как KV-aware routing и disaggregated serving.
Когда используется плоскость событий?
Основные сценарии использования:
- События KV-кэша -- воркеры публикуют состояние кэша, чтобы router мог принимать решения о планировании с учетом кэша.
- Метрики нагрузки воркеров -- воркеры сообщают об утилизации, чтобы router мог балансировать нагрузку.
- Отслеживание последовательностей -- координирует активные последовательности между репликами router для отказоустойчивой маршрутизации.
Выбор транспорта
Плоскость событий поддерживает два транспорта:
| NATS (по умолчанию) | ZMQ | |
|---|---|---|
| Внешняя инфраструктура | Требуется сервер NATS | Не требуется (peer-to-peer) |
| Сложность настройки | Простая -- указать сервер NATS | Автоматическая -- воркеры привязывают сокеты и регистрируются через discovery |
| Лучше всего подходит для | Крупномасштабных развертываний | Низких операционных накладных расходов |
Конфигурация
Выбор транспорта
Задайте переменную окружения DYN_EVENT_PLANE, чтобы выбрать транспорт:
# Use NATS (default -- no need to set explicitly)
export DYN_EVENT_PLANE=nats
# Use ZMQ
export DYN_EVENT_PLANE=zmq
Компоненты Python также принимают это значение как CLI-флаг:
# SGLang backend
python3 -m dynamo.sglang --event-plane zmq --model Qwen/Qwen3-0.6B
# vLLM backend
python3 -m dynamo.vllm --event-plane zmq --model Qwen/Qwen3-0.6B
Переменные окружения
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
DYN_EVENT_PLANE | Транспорт: nats или zmq | Зависит от контекста (см. ниже) |
NATS_SERVER | URL сервера NATS (только для транспорта NATS) | nats://localhost:4222 |
Если DYN_EVENT_PLANE не задана, значение по умолчанию выбирается на основе discovery backend:
--discovery-backend fileилиmem(локальные backend'ы): по умолчанию используется zmq — внешние сервисы не требуются.--discovery-backend etcdилиkubernetes(распределенные backend'ы): по умолчанию используется nats.
Задайте DYN_EVENT_PLANE явно, чтобы переопределить этот автоматический выбор.
Транспорт NATS
При использовании NATS (DYN_EVENT_PLANE=nats или не задана при распределенном backend):
- Требуется запущенный сервер NATS. Задайте
NATS_SERVER, если он находится не наlocalhost:4222. - События публикуются в subjects NATS, ограниченные namespace и компонентом.
- Встроены повторное подключение и буферизация сообщений при коротких разрывах соединения.
Пример настройки:
export NATS_SERVER=nats://nats-server:4222
export DYN_EVENT_PLANE=nats
# Start workers -- explicitly enable KV event publishing
python3 -m dynamo.vllm --model Qwen/Qwen3-0.6B \
--kv-events-config '{"publisher":"nats","topic":"kv-events","enable_kv_cache_events":true}'
# Start frontend -- it subscribes to events from NATS automatically
python3 -m dynamo.frontend --router-mode kv
Транспорт ZMQ
При использовании ZMQ (DYN_EVENT_PLANE=zmq):
- Внешний сервер не требуется. Каждый worker привязывает сокет ZMQ PUB и объявляет свой адрес через систему discovery.
- Подписчики автоматически обнаруживают всех активных publishers и подключаются к ним.
- Когда publishers появляются и исчезают (например, при масштабировании воркеров вверх или вниз), подписчики динамически корректируют свои подключения.
Пример настройки:
export DYN_EVENT_PLANE=zmq
# Start workers -- each binds a ZMQ socket, registers with discovery
python3 -m dynamo.vllm --model Qwen/Qwen3-0.6B \
--kv-events-config '{"publisher":"zmq","endpoint":"tcp://*:20080","enable_kv_cache_events":true}'
# Start frontend -- discovers workers and connects directly
python3 -m dynamo.frontend --router-mode kv
Отключение плоскости событий
Если вам не нужен KV-aware routing, плоскость событий можно полностью отключить:
python3 -m dynamo.frontend --router-mode kv --no-router-kv-events
При использовании --no-router-kv-events:
- Router переключается на cache-aware routing на основе прогнозирования (оценивает состояние кэша по решениям маршрутизации).
- Сервер NATS и сокеты ZMQ не нужны.
- Истечение срока действия на основе TTL не дает прогнозируемому состоянию устаревать.
Режимы развертывания
Bare Metal / локально
Оба транспорта работают из коробки:
# NATS (requires nats-server running)
export NATS_SERVER=nats://localhost:4222
# OR ZMQ (no extra infrastructure)
export DYN_EVENT_PLANE=zmq
Kubernetes (с Dynamo Operator)
Оператор может внедрять DYN_EVENT_PLANE в pods. Применяются те же варианты транспорта. При использовании NATS разверните сервер NATS в кластере и задайте NATS_SERVER соответствующим образом.
Связанная документация
- Плоскость обнаружения -- обнаружение сервисов и координация (etcd, Kubernetes)
- Распределенная среда выполнения -- архитектура runtime
- Плоскость запросов -- конфигурация транспорта запросов
- Отказоустойчивость -- обработка сбоев