Распределённые системы
Саги: тест на свободное воспроизведение
Воспроизведение бьёт перечитывание. На каждый промпт скажи или напиши полный ответ по памяти до того, как откроешь образцовый, — именно усилие припоминания закрепляет трейдоффы саги, когда столкнёшься с ними в реальном ревью дизайна.
Восстанови спину юнита, не подсматривая: почему 2PC ломается между сервисами, чем compensation отличается от rollback, choreography против orchestration, аномалии изоляции и фиксы на уровне приложения — включая idempotency.
- 01Почему two-phase commit непригоден между микросервисами, хотя он корректен?
- 02Объясни, почему compensating transaction — не rollback базы, и как это меняет порядок шагов.
- 03Сравни choreography и orchestration и дай эвристику выбора.
- 04Что значит, что сага — это «ACID минус I», и какие три аномалии следуют?
- 05Назови контрмеры уровня приложения для потерянной изоляции саги и что делает каждая.
- 06Почему шаги и компенсации саги должны быть идемпотентны и как сделать шаг списания идемпотентным?
Если ты смог восстановить каждый ответ по памяти, ты держишь спину юнита: 2PC корректен, но держит межсервисные блокировки за блокирующим координатором, поэтому саги меняют глобальную транзакцию на локальные коммиты плюс написанные руками компенсации, которые суть новые прямые действия (необратимые ставь последними). Шаги связываешь choreography или orchestration по эвристике сложности, за потерю изоляции платишь semantic lock, коммутативными обновлениями и проверкой версии, а поскольку доставка at-least-once, каждый шаг и компенсация обязаны быть идемпотентны.