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 только с явным обоснованием.