# apache/incubator-seata

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/apache-incubator-seata).**

25,984 stars · 8,868 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/apache/incubator-seata
- Homepage: https://seata.apache.org/
- awesome-repositories: https://awesome-repositories.com/repository/apache-incubator-seata.md

## Topics

`at` `consistency` `distributed-transaction` `microservice` `saga` `tcc` `xa`

## Description

Seata is a distributed transaction coordinator designed to ensure data consistency and atomicity across microservices. It provides a centralized framework for managing global transactions, preventing partial data updates across different databases and services.

The project implements multiple transaction modes to balance consistency and performance. This includes an automatic mode that uses rollback logs to coordinate compensation without modifying business logic, a try-confirm-cancel pattern for resources lacking native ACID support, and a saga orchestration engine for managing long-lived business processes through eventual consistency. It also supports strict atomic execution for databases that implement the XA protocol.

The system features a decoupled compute-storage architecture to enable horizontal scaling of coordinator nodes and a distributed configuration center for real-time synchronization across clusters. It includes capabilities for multi-tenant isolation, namespace environment separation, and a visual workflow designer for modeling transaction sequences.

The framework integrates with various RPC frameworks and uses gRPC for bidirectional streaming between clients and coordinators.

## Tags

### Software Engineering & Architecture

- [Distributed Transaction Management](https://awesome-repositories.com/f/software-engineering-architecture/distributed-transaction-management.md) — Ensures data consistency across multiple microservices by coordinating global commits and rollbacks. ([source](https://seata.apache.org/))
- [Automatic Compensation Mechanisms](https://awesome-repositories.com/f/software-engineering-architecture/data-consistency-models/automatic-compensation-mechanisms.md) — Ensures data consistency in relational databases by automatically applying compensation operations during global rollbacks. ([source](https://seata.apache.org/))
- [Distributed Transaction Coordinators](https://awesome-repositories.com/f/software-engineering-architecture/distributed-transaction-coordinators.md) — Manages global transactions across microservices to ensure data consistency and atomicity.
- [Automatic Compensation Coordination](https://awesome-repositories.com/f/software-engineering-architecture/distributed-transaction-coordinators/automatic-compensation-coordination.md) — Implements an automatic mode that uses rollback logs to coordinate compensation without modifying business logic. ([source](https://cdn.jsdelivr.net/gh/apache/incubator-seata@2.x/README.md))
- [Saga Coordinators](https://awesome-repositories.com/f/software-engineering-architecture/distributed-transaction-coordinators/saga-coordinators.md) — Coordinates long-running processes as a sequence of local transactions with corresponding compensating actions.
- [Two-Phase Commit Protocols](https://awesome-repositories.com/f/software-engineering-architecture/distributed-transaction-coordinators/two-phase-commit-protocols.md) — Ensures atomicity across multiple services by managing a global prepare phase followed by synchronized commit or rollback.
- [Try-Confirm-Cancel Implementations](https://awesome-repositories.com/f/software-engineering-architecture/distributed-transaction-patterns/try-confirm-cancel-implementations.md) — Handles distributed transactions using the Try-Confirm-Cancel pattern for resources lacking native ACID support.
- [Database Operation Interceptors](https://awesome-repositories.com/f/software-engineering-architecture/request-interception-middleware/database-operation-interceptors.md) — Intercepts database operations to inject distributed transaction logic without requiring changes to business code.
- [Consistency Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/distributed-computing-paradigms/microservice-frameworks/consistency-frameworks.md) — Maintains synchronized state across different databases and services using automated compensation and rollback logs.
- [XA Transaction Managers](https://awesome-repositories.com/f/software-engineering-architecture/distributed-transaction-coordinators/two-phase-commit-protocols/xa-transaction-managers.md) — Ensures strong consistency for databases supporting the XA protocol through two-phase commit.
- [Data Source Proxying](https://awesome-repositories.com/f/software-engineering-architecture/distributed-transaction-management/data-source-proxying.md) — Intercepts data source operations to coordinate distributed transactions across different storage modes. ([source](https://seata.apache.org/zh-cn/docs/ops/deploy-guide-beginner))
- [User-Defined Transaction Logic](https://awesome-repositories.com/f/software-engineering-architecture/distributed-transaction-managers/user-defined-transaction-logic.md) — Provides a mechanism to execute custom prepare, commit, and rollback behaviors for resources lacking native ACID support. ([source](https://seata.apache.org/docs/v2.0/overview/what-is-seata))

### Data & Databases

- [Undo Log-Based Rollbacks](https://awesome-repositories.com/f/data-databases/atomic-transaction-models/undo-log-based-rollbacks.md) — Records local data changes to automatically generate and apply undo operations upon transaction failure.
- [Transaction Identifier Propagation](https://awesome-repositories.com/f/data-databases/database-transactions/nested-transactions/ambient-transactions/transaction-identifier-propagation.md) — Passes global transaction identifiers across microservice boundaries through RPC integration for call-chain tracking. ([source](https://seata.apache.org/zh-cn/docs/ops/deploy-guide-beginner))
- [Distributed Atomic Transactions](https://awesome-repositories.com/f/data-databases/distributed-atomic-transactions.md) — Uses the XA protocol to ensure strict atomicity across supported databases. ([source](https://seata.apache.org/zh-cn/))
- [Decoupled Compute and Storage Scaling](https://awesome-repositories.com/f/data-databases/horizontal-scaling/decoupled-compute-and-storage-scaling.md) — Separates the transaction coordinator logic from session state storage to enable independent horizontal scaling.
- [Global Transaction Session Persistence](https://awesome-repositories.com/f/data-databases/in-memory-session-stores/relational-database-session-stores/global-transaction-session-persistence.md) — Stores global transaction session information using local files, relational databases, Redis, or Raft. ([source](https://seata.apache.org/zh-cn/docs/ops/deploy-guide-beginner))
- [gRPC Data Streaming](https://awesome-repositories.com/f/data-databases/real-time-data-streaming/grpc-data-streaming.md) — Uses gRPC for high-performance bidirectional data streaming between clients and coordinators.

### Networking & Communication

- [Eventual Consistency Orchestrators](https://awesome-repositories.com/f/networking-communication/eventual-consistency-orchestrators.md) — Orchestrates consistency across long-lived microservice transactions to ensure eventual data alignment. ([source](https://seata.apache.org/))
- [RPC Frameworks](https://awesome-repositories.com/f/networking-communication/rpc-frameworks.md) — Integrates distributed transaction management across various RPC frameworks to maintain consistency between service architectures. ([source](https://seata.apache.org/zh-cn/))
- [Custom TCC Implementations](https://awesome-repositories.com/f/networking-communication/custom-protocol-implementations/custom-tcc-implementations.md) — Allows the definition of custom prepare, commit, and rollback logic for resources lacking native ACID support. ([source](https://seata.apache.org/zh-cn/docs/overview/what-is-seata))
- [Registry-Based Service Discovery](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-systems-coordination/service-discovery-mechanisms/registry-based-service-discovery.md) — Uses a naming server as a registry to resolve the network locations of coordinator nodes.
- [gRPC Implementations](https://awesome-repositories.com/f/networking-communication/polyglot-client-support/grpc-implementations.md) — Provides high-performance bidirectional data streaming using gRPC and protobufs for cross-language communication. ([source](https://seata.apache.org/blog))
- [Transactional Queues](https://awesome-repositories.com/f/networking-communication/transaction-relayers/transactional-queues.md) — Ensures atomicity between local transactions and message delivery by including production as a participant in global transactions. ([source](https://seata.apache.org/docs/user/quickstart))

### System Administration & Monitoring

- [Try-Confirm-Cancel Patterns](https://awesome-repositories.com/f/system-administration-monitoring/system-activity-monitoring/session-activity-monitors/workflow-cancellation-handlers/remote-task-cancellation/cancellation-handlers/try-confirm-cancel-patterns.md) — Implements the Try-Confirm-Cancel pattern to manage distributed consistency by reserving resources in a try phase.

### DevOps & Infrastructure

- [Registrar-Based Node Discoveries](https://awesome-repositories.com/f/devops-infrastructure/cluster-node-management/automated-node-discovery/registrar-based-node-discoveries.md) — Locates available coordinator nodes by querying a naming server using cluster metadata and load balancing. ([source](https://seata.apache.org/blog))
- [Distributed Configuration Management](https://awesome-repositories.com/f/devops-infrastructure/distributed-configuration-management.md) — Provides a centralized store for managing configuration key-value pairs across a server cluster. ([source](https://seata.apache.org/blog))
