Distributed Message Queue (Kafka-style)
PremiumDistributed Message Queue (Kafka-style) case study. Producers (idempotent + transactional) write batched/compressed records to a 3-broker cluster (DC-1) with RF=3 and min.insync.replicas=2. Three partitions (P0/P1/P2) each have a leader and 2 followers spread across racks. Control plane is KRaft metadata quorum (no ZooKeeper) with 3 voters, plus group coordinator and transaction coordinator. Two consumer groups: analytics (auto.commit=false, 1:1 partition assignment) and alerting (read_committed for EOS). Internal compacted topics: __consumer_offsets, __transaction_state, __cluster_metadata. Multi-DC mirror via MirrorMaker 2 to DC-2, with tiered storage (S3) for cold segments. Two ADR panels: pull vs push consumer model, KRaft vs ZooKeeper metadata. Six animated scenarios: produce + ISR replicate (acks=all), consumer group fetch + offset commit (zero-copy sendfile), leader broker failure + ISR election (KRaft fast failover), replay from offset (retention + tiered recovery), exactly-once via transactional producer (PID/epoch fence + 2PC commit markers + read_committed), and ADR walkthrough.
Что внутри
Distributed Message Queue
Зачем нужно знать
Распределенная очередь сообщений нужна, когда система должна принимать события быстрее, чем downstream-сервисы успевают их обработать, и при этом не терять данные. Это базовый компонент event-driven architecture: платежи публикуют события для аналитики, логирование пишет миллионы записей в секунду, CDC переносит изменения из базы, ML pipeline читает историю повторно, а consumer groups независимо обрабатывают один и тот же поток.
Kafka-like очередь важна тем, что это не просто брокер с push-доставкой. Это распределенный commit log с partition ordering, durable retention, replay by offset, consumer groups, replication и контролируемой моделью подтверждений. На интервью этот кейс проверяет понимание диска, page cache, batching, backpressure, consumer lag, leader election, quorum writes и exactly-once semantics.
Масштаб кейса: десятки тысяч topics, сотни тысяч partitions, сотня brokers, миллионы сообщений в секунду, replication factor 3, retention на дни и многократный fan-out на consumer groups. При таком масштабе bottleneck часто не CPU, а сеть, disk bandwidth, количество partitions на broker, размер batches и количество rebalance events.
Связанные темы: [CONCEPT]queues, Kafka Broker Internals, [CONCEPT]replication, [CONCEPT]consensus-overview, [CONCEPT]partitioning-strategies.
Mental model
Ментальная модель Kafka-like системы: topic разбит на partitions, каждая partition является append-only log. Producer выбирает partition по key hash или custom partitioner, отправляет batch лидеру partition, лидер пишет batch в segment file, followers догоняют лидер через replication fetch, а consumer читает по offset.
Ordering гарантируется только внутри одной partition. Если все сообщения одного заказа имеют одинаковый key order_id, они попадут в одну partition и сохранят порядок. Если key не задан или распределяется случайно, глобального порядка нет. Это не bug, а цена горизонтального масштабирования.
Полный разбор, ADR-ы, сценарии и deep dives — после оплаты бандла.
System Design Cases
Полный доступ ко всем кейсам бандла
Premium открывает полный разбор для подготовки к интервью
- Где архитектура ломается первой и как защищать выбранный дизайн.
- Конкретный capacity math: размеры данных, throughput и пороги масштабирования.
- Trade-off-ы в стиле ADR, которые легко превращаются в структурированный ответ.
- Запускаемые сценарии: happy path, отказы, retry и recovery.
Регистрация бесплатна. Оплата — следующим шагом, из этого же кейса.
Уже есть аккаунт?