Очереди, потоки, события
Outbox: свободное припоминание
Припоминание сильнее перечитывания. На каждый промпт проговори или запиши полный ответ по памяти, прежде чем открыть модельный — именно усилие припоминания закрепляет материал.
Восстанови ключевые механизмы юнита — разрыв dual-write, фикс одной транзакцией, polling vs CDC, гарантию at-least-once, idempotent-консьюмеров и операционный налог — не подглядывая в урок.
- 01Почему у хендлера, который пишет в базу и публикует в брокер, нет крах-безопасного порядка этих двух вызовов?
- 02Как transactional outbox превращает dual-write в нечто атомарное, и что именно долговечно после COMMIT?
- 03Сравни polling relay и CDC relay по задержке, нагрузке на первичную и операционной стоимости.
- 04Почему доставка outbox at-least-once, а не exactly-once, и что это навязывает консьюмерам?
- 05Ты масштабируешь polling relay до нескольких реплик. Какие две проблемы появляются и как решить каждую?
- 06Что вызывает bloat outbox-таблицы и как её reaping без вреда горячему пути записи?
Если ты смог восстановить каждый ответ по памяти, ты держишь хребет юнита: dual-write поперёк двух хранилищ не имеет крах-безопасного порядка; outbox схлопывает его в одну локальную transaction, чей COMMIT долговечно фиксирует намерение публиковать; relay шлёт строки polling (просто, ограничено интервалом) или CDC (быстро, операционно тяжелее); разрыв publish-then-mark делает доставку at-least-once, поэтому консьюмеры дедупят по стабильному event id; а операционный налог — bloat, порядок, конкурирующие relay — оплачивается партиционированием или батчевым reaping, keying по aggregate и FOR UPDATE SKIP LOCKED.