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) для длительных workflows. Ключевые проблемы включают coordination blocking, single points of failure, latency, и обработку частичных сбоев с rollback или compensation. Практический дизайн часто использует transaction manager и resource managers, которые поддерживают стандартизированные интерфейсы, такие как XA/JTA или DTC, и могут использовать outbox patterns, idempotent operations, и logging для auditability. В современных microservice architectures, strong global 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.

📚 Источники