Очереди, потоки, события
Капстоун очередей: тест на свободное припоминание
Припоминание сильнее перечитывания. Каждый промпт просит реконструировать один шов pipeline заказов по памяти — скажи или запиши полный ответ до того, как откроешь эталон. Усилие припоминания и сваривает уроки трека в один дизайн, который ты сможешь защитить на ревью.
Реконструируй хребет pipeline, не подглядывая: атомарность outbox, риск slot у CDC, порядок по ключу, контракт at-least-once-плюс-идемпотентность, retry-бюджеты и DLQ, а также UI поверх eventual consistency.
- 01Проведи событие заказа через все шесть хопов pipeline и назови гарантию и защиту на каждом.
- 02Почему именно идемпотентность, а не exactly-once доставка, — инвариант, который держит весь pipeline?
- 03И outbox, и CDC дают at-least-once доставку. Объясни, как они композируются и почему replication slot у CDC — самая опасная часть всей системы.
- 04Где в pipeline живёт порядок по ключу и назови три способа, которыми он тихо ломается в production.
- 05Транзиентный сбой и poison-сообщение оба роняют консьюмер оплаты. Объясни, почему им нужна разная обработка и как retry-бюджет плюс DLQ разделяют их.
- 06Две метрики вместе — растущий consumer lag и заполняющийся dead-letter queue — описывают один сбой. Объясни его и где должна жить observability по всему pipeline.
Если ты реконструировал каждый ответ по памяти, у тебя есть хребет трека: outbox делает запись и её событие атомарными в одной локальной транзакции; CDC отправляет эти строки at-least-once, и его replication slot — заряженное ружьё, на которое надо алертить и которое надо capить; топик хранит порядок по ключу через ключевание на order_id, и этот порядок ломается при репартиционировании, при вставке вне очереди ретраями и DLQ-replay или при переупорядочивании неидемпотентным продюсером; consumer group доставляет at-least-once, коммитя после обработки, так что хендлеры должны быть идемпотентны; транзиентные сбои ретраятся против бюджета, а poison-сообщения идут в DLQ; и UI говорит правду об окне согласованности. Идемпотентность — это нить, а observability живёт на швах: correlation id end-to-end, лаг по тренду и алерты на глубину DLQ и slot lag.