Distributed Transactions

Distributed transactions координують оновлення в межах кількох ресурсів для підтримки atomicity, consistency, isolation та durability в розподіленій системі.

Distributed transactions координують оновлення в межах кількох, часто гетерогенних, ресурсів для завершення однієї логічної операції. Вони спрямовані на збереження ACID properties через resource managers, які не мають спільного datastore. Поширені підходи до координації включають two-phase commit (2PC), three-phase commit (3PC) або compensating transactions (Sagas) для довготривалих workflow. Основні проблеми включають координаційне блокування, single points of failure, latency та обробку часткових відмов з rollback або compensation. Практичний дизайн часто використовує transaction manager та resource managers, які підтримують стандартизовані інтерфейси, такі як XA/JTA або DTC, і можуть використовувати outbox patterns, idempotent operations та logging для auditability. У сучасних microservice architectures сильні глобальні ACID часто замінюються на eventual consistency з compensating actions для покращення availability та latency.

        graph LR
  Center["Distributed Transactions"]:::main
  Rel_decentralized_derivatives_pricing_models["decentralized-derivatives-pricing-models"]:::related -.-> Center
  click Rel_decentralized_derivatives_pricing_models "/terms/decentralized-derivatives-pricing-models"
  Rel_transaction_sharding["transaction-sharding"]:::related -.-> Center
  click Rel_transaction_sharding "/terms/transaction-sharding"
  Rel_decentralized_exchange_dex_order_book["decentralized-exchange-dex-order-book"]:::related -.-> Center
  click Rel_decentralized_exchange_dex_order_book "/terms/decentralized-exchange-dex-order-book"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Простими словами

Generated ELI5 content

🤓 Expert Deep Dive

Generated expert content

❓ Часті питання

What is a distributed transaction?

A transaction that spans multiple networked resources and coordinates to appear atomic across all participants.

What does ACID mean in this context?

Atomicity, Consistency, Isolation, and Durability, applied across multiple resources through coordination protocols.

What is two-phase commit (2PC)?

A protocol with a prepare phase and a commit phase to ensure all participants commit or roll back together.

What about sagas and compensating actions?

Sagas sequence local transactions with compensating actions to achieve long-running distributed transactions without locking all resources.

What are common failure modes?

Coordinator failure, participant failure, network partitions, and lock contention can lead to blocking or partial commits.

When should you use 2PC vs sagas?

Use 2PC for short, strongly consistent, bounded transactions; use sagas for long-running processes requiring high availability and eventual consistency.

What are alternatives to strict ACID?

Eventual consistency models, compensating actions, and idempotent design patterns.

📚 Джерела