Этап 7 из 15 · ≈ 4 ч

Очереди, pub/sub и гарантии доставки

Основа с Junior

Модели доставки, at-most-once и at-least-once, идемпотентная обработка, повторы и DLQ.

Что важно знать

  • Очередь: сообщение получает один потребитель. Pub/sub: каждый подписчик получает копию.
  • At-most-once — может потеряться; at-least-once — может прийти дважды; exactly-once — дорого и только в пределах системы.
  • Идемпотентность обработчика — ключ: таблица обработанных идентификаторов, upsert, проверка состояния.
  • Повторы с паузой и DLQ для сообщений, которые не обрабатываются.
  • Событие («заказ создан») против команды («отправь письмо»).

Критерии освоения

Junior ≈ 4 ч

  • Объясняет разницу очереди и pub/sub и зачем сервисам брокер

Практика. Связать два сервиса через очередь — один публикует заказы, второй их обрабатывает.

Middle ≈ 8 ч

  • Объясняет гарантии доставки и делает обработчик идемпотентным
  • Настраивает повторы с паузой и очередь «мёртвых» сообщений
  • Проектирует события и команды с версионированием схемы

Практика. Сделать обработчик, устойчивый к дубликатам и падениям, с повторами и DLQ, и проверить, убивая его посреди обработки.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Что такое message broker и зачем он нужен?Junior

Брокер — посредник, который принимает сообщения от отправителей и доставляет получателям асинхронно: стороны не знают друг о друге и не обязаны работать одновременно.

Полный разбор
Как на стороне consumer-а добиться доставки at-least-once и почему при этом появляются дубли?Middle

Сначала обработать, потом зафиксировать offset (или подтвердить сообщение). Если упасть между обработкой и фиксацией, сообщение придёт снова — отсюда дубли, и обработка должна быть идемпотентной.

Полный разбор
Что такое dead letter queue (DLQ) и зачем она нужна?Senior

DLQ — отдельная очередь или топик, куда уходит сообщение после N неудачных попыток, чтобы не блокировать поток и не потеряться.

Полный разбор
Чем модель pub/sub отличается от point-to-point (очередь)?Junior

Pub/sub — каждое сообщение получает каждый подписчик (рассылка события). Point-to-point (очередь) — каждое сообщение получает один из конкурирующих потребителей (распределение работы).

Полный разбор
Как сделать consumer идемпотентным при семантике at-least-once?Middle

Дубли неизбежны при at-least-once, поэтому обработчик делает повтор безвредным: проверка id сообщения в таблице обработанных в той же транзакции, что и эффект, или естественно идемпотентные операции.

Полный разбор
Чем неблокирующий повтор через отдельные retry-топики лучше повтора прямо в обработчике?Senior

Блокирующий повтор в обработчике держит партицию: одно проблемное сообщение задерживает все следующие. Retry-топики уносят сообщение на повтор с задержкой, а партиция продолжает обрабатываться.

Полный разбор
Что такое topic, partition и offset в Kafka?Junior

Топик — именованный поток сообщений. Партиция — упорядоченный журнал, часть топика. Offset — номер сообщения внутри партиции.

Полный разбор
Что означает семантика доставки at-least-once?Junior

At-least-once — сообщение не теряется, но может прийти несколько раз: отправитель повторяет, пока не получит подтверждение.

Полный разбор
Чем отличаются at-most-once, at-least-once и exactly-once?Middle

At-most-once — не повторяем: возможны потери, дублей нет. At-least-once — повторяем до подтверждения: потерь нет, дубли возможны. Exactly-once — эффект ровно один раз: достигается не доставкой, а идемпотентностью или транзакциями.

Полный разбор

Разборы темы

← Вся карта «Backend-разработчик»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования