System Design Space
Граф знанийНастройки

Обновлено: 2 марта 2026 г. в 16:45

Distributed Message Queue

mid

Классическая задача: partitioned log, consumer groups, retry/DLQ, delivery semantics и backpressure.

Источник

Практический кейс из главы 9

Distributed Message Queue как базовый примитив для асинхронной интеграции сервисов.

Читать обзор

Distributed Message Queue - базовый инфраструктурный примитив для асинхронной интеграции. Он позволяет развязать продюсеров и консьюмеров по времени, сгладить burst-нагрузку и сделать обработку устойчивой к частичным сбоям. На интервью кейс проверяет понимание delivery semantics, ordering, retry/DLQ и backpressure.

Примеры систем очередей

  • Apache Kafka: partitioned log, consumer groups, replay и event streaming
  • RabbitMQ: routing/queues/exchanges, гибкие delivery guarantees
  • Apache Pulsar: separated storage/compute, multi-tenant topics
  • NATS JetStream: лёгкая шина с persisted streams
  • AWS SQS/SNS: managed messaging для cloud-native сценариев

Функциональные требования

Core API

  • POST /topics/:name/messages - publish
  • GET /topics/:name/poll - consume
  • POST /offsets/commit - commit offset
  • POST /topics/:name/replay - replay by offset

Надёжность обработки

  • Consumer groups для параллельной обработки
  • Retry topics + DLQ для проблемных сообщений
  • Гарантии доставки (at-least-once baseline)
  • Backpressure и throttling при всплесках

Нефункциональные требования

ТребованиеЦелевое значениеОбоснование
ThroughputВысокий под burst-нагрузкойСглаживание пиков и decoupling сервисов
LatencyКонтролируемый end-to-end lagSLO по времени доставки событий
ScalabilityЛинейно по partitionРост без полного redesign
DurabilityReplicated logПереживать отказ брокера/узла
ReliabilityAt-least-once baselineПредсказуемая обработка при ошибках

High-Level Architecture

Базовый контур DMQ: ingress через broker frontend, partitioned replicated log и delivery-контуры consumer groups с retry/DLQ.

Глубже

Kafka (book summary)

Подробно про partitioned log, consumer groups, replication и operational trade-offs.

Читать обзор

Architecture Map

partitioned log + consumer groups + retry/DLQ

Схема показывает publish path, consume path и контур обработки проблемных сообщений.

Producer Services
publish events
Broker + Topic Router
ingress + partitioning
Partitions + Replicated Log
durable append-only log
Consumer + Offset + Retry/DLQ
delivery control

Data Model Map

Структура события в очереди и логика размещения в partitioned log.

Message Envelope

key

order:1234

payload

{ status: "created", amount: 9900 }

headers

message_idtrace_idretry_count

Log Placement

partitioning

hash(key) -> topic: orders / partition: 7

offsets

offset: 912334 (append-only)

retention

7d / 100GB per partition / compaction

Ordering

Гарантируется внутри partition, но не между partition.

Replay

Offset позволяет восстановить обработку после сбоя consumer.

Idempotency

`message_id` помогает дедуплицировать повторные delivery.

Read / Write Path через компоненты

Интерактивный flow: как событие проходит publish path до durable ack и как consumer читает, обрабатывает и коммитит offset c fallback в retry/DLQ.

Read/Write Path Explorer

Интерактивный разбор publish/consume path через ключевые компоненты distributed message queue.

1
Producer Service
publish batch
2
Broker Frontend
auth + quota
3
Topic Router
hash(key)
4
Leader Append
append log
5
Replicas + Ack
ISR/quorum
Write path: продюсер публикует событие через broker frontend, сообщение попадает в leader partition и подтверждается после репликации.

Write path

  1. Partition key определяет ordering-домен и распределение нагрузки по partition-ам.
  2. Ack policy (leader vs quorum) задаёт баланс latency и durability.
  3. Producer batching и compression обычно критичны для throughput под burst-нагрузкой.
  4. Replication lag нужно мониторить отдельно от end-to-end consumer lag.

Риски и типовые ошибки

  • Global ordering: обещать глобальный порядок без объяснения цены и ограничений.
  • Retry storms: отсутствие bounded retry и backoff перегружает кластер.
  • Duplicate effects: отсутствие idempotent consumers при at-least-once.
  • Poison messages: нет DLQ/карантина и процедур ручного разбора.
  • Wrong metrics: путать broker throughput с end-to-end processing latency.

Что важно проговорить на интервью

  • Границы ordering: внутри partition vs глобально.
  • Выбранные delivery semantics и почему они приемлемы для бизнес-кейса.
  • Стратегия offset commit и поведение после consumer crash.
  • Политика retry/DLQ и как организован safe replay.

Связанные главы

Связанные материалы

Чтобы отмечать прохождение, включи трекинг в Настройки

System Design Space

© 2026 Александр Поломодов