Очереди, потоки, события
Гарантии доставки: тест на свободное припоминание
Припоминание сильнее перечитывания. На каждый промпт скажи или запиши полный ответ по памяти, прежде чем открыть эталон — именно усилие припоминания связывает доказательство невозможности с production-паттернами.
Реконструируй позвоночник юнита, не подсматривая в уроки: почему exactly-once delivery невозможна, откуда берутся дубликаты, как консьюмер делает их безвредными и какой инструмент брокера какой пробел закрывает.
- 01Сформулируй Two Generals' Problem и объясни асимметрию, делающую exactly-once processing достижимым, хотя exactly-once delivery — нет.
- 02Назови три плеча сбоев и скажи, какое порождает больше всего production-дубликатов и почему.
- 03Почему dedup INSERT и side effect должны коммититься в одной транзакции и почему INSERT первым?
- 04Какое правило большого пальца для SQS visibility timeout и что сбрасывается при передоставке?
- 05Что покрывают idempotent producer Kafka и транзакции по отдельности, и что они НЕ покрывают?
- 06Что такое проблема dual-write и как паттерн outbox её решает?
Если смог реконструировать каждый ответ по памяти — ты держишь позвоночник юнита: Two Generals делает exactly-once delivery невозможной, поэтому прод работает по at-least-once и обеспечивает effectively-once в консьюмере. Дубликаты концентрируются на плече 3; INSERT-first транзакционный дедуп плюс Idempotency-Key для внешних вызовов делают их безвредными. Idempotent producer Kafka и транзакции укрепляют только путь внутри Kafka, SQS visibility timeout надо ставить в ~6x обработки, а паттерн outbox закрывает dual-write на стороне продюсера. Повторяющийся урок: гарантии брокера необходимы, но никогда не достаточны — корректность живёт в консьюмере и в операционной дисциплине.