awesome-everything EN
↑ Обратно к восхождению

Очереди, потоки, события

Гарантии доставки: тест с выбором ответа

Суть Тест с выбором на синтез по всему юниту — доказательство невозможности, три плеча сбоев, idempotent-консьюмеры, Kafka EOS, SQS-таймауты и outbox.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

Шесть вопросов поперёк всего юнита. Каждый отражает решение, которое ты принимаешь в реальном инциденте — не определение для заучивания, а компромисс, который надо взвесить, пока клиентов списывают дважды.

Цель

Убедись, что связываешь доказательство невозможности, плечи сбоев, идемпотентность консьюмера, транзакции Kafka, механику SQS и outbox в одну связную историю end-to-end корректности.

Викторина

Вендор рекламирует у очереди 'exactly-once delivery'. Senior-ревьюер возражает. Какое возражение точное и корректное?

Викторина

Из трёх плеч сбоев какое порождает дубликаты, с которыми реально борешься в проде, и почему фикс ложится на консьюмера?

Викторина

Команда реализует дедуп консьюмера так: SELECT по msg_id; если нет — вызвать Stripe и сделать INSERT. При ребалансе consumer-group всё равно видят двойные списания. В чём структурный дефект?

Викторина

У Kafka Streams-джобы стоит enable.idempotence=true и transactional.id, она пишет в output-топик И в таблицу Postgres. После рестарта брокера в Postgres всё равно дубли строк. Почему?

Викторина

У SQS-консьюмера средняя обработка 30с; дефолтный visibility timeout очереди 30с. Инженеры сообщают о спорадической одновременной двойной обработке. Первый фикс и что он даёт?

Викторина

Сервис обновляет Postgres и публикует событие в Kafka двумя отдельными шагами. Под нагрузкой downstream-консьюмеры иногда вообще не видят событие, чья строка в БД явно закоммичена. Какой паттерн чинит первопричину?

Итог

Сквозная линия юнита — одна цепочка: exactly-once delivery невозможна (Two Generals), поэтому работаешь по at-least-once и переносишь корректность на консьюмера. Дубликаты концентрируются на плече 3; самая дешёвая защита — INSERT-first транзакционный дедуп, расширенный Idempotency-Key в стиле Stripe для внешних вызовов. Idempotent producer Kafka (~3%) и транзакции (~20–30%) укрепляют только путь внутри Kafka — кросс-системным записям всё равно нужен дедуп консьюмера. SQS visibility timeout должен быть ~6x обработки (или с heartbeat), а паттерн outbox закрывает разрыв dual-write на стороне продюсера. Гарантии брокера необходимы, но никогда не достаточны.

Продолжить восхождение ↑Гарантии доставки: тест на свободное припоминание
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.