advanced
Distributed transactions
Понимайте, почему two-phase commit редок в service architectures и когда stronger coordination стоит availability и coupling costs.
Two-phase commit (2PC) координирует всех участников до commit, давая strong consistency, но связывая availability — при зависании coordinator или participant locks сохраняются. Microservice architectures редко используют 2PC между сервисами; БД могут применять его внутри.
Предпочитайте sagas, outbox и idempotent steps для cross-service workflows. Distributed transactions — для редких случаев regulatory или inventory correctness с принятием operational cost.
На интервью: объясните CAP trade-offs; почему XA между microservices редок; когда хватит local transactions плюс events.
Типовые ошибки: distributed transactions по умолчанию; долгие locks через HTTP; игнор partial failure на prepare phase.
Чеклист:
- По умолчанию saga или outbox patterns.
- Транзакции local в пределах одного сервиса.
- Измеряйте lock duration и failure modes.
- 2PC только с явным обоснованием.