-
Notifications
You must be signed in to change notification settings - Fork 8.8k
Home
A distributed transaction solution with high performance and ease of use for microservices architecture.
Let's image a traditional monolithic application. Its business is built up with 3 modules. They use a single local data source.
Naturally, data consistency will be guaranteed by local transaction.
Thing changed in microservices architecture. The 3 modules mentioned are designed to be 3 services on top of 3 different data sources (Pattern: Database per service). Data consistency within every single service is naturally guaranteed by local transaction.
But how about the whole business logic scope?
FESCAR is just a solution for problem mentioned above.
Firstly, how to define a Distributed Transaction?
We say, a Distributed Transaction is a Global Transaction which is made up with batch of Branch Transation, and normally Branch Transation is just Local Transaction.
There are 3 basic components in FESACR:
- **Transaction Coordinator(TC): **Maintain status of global and branch transactions, drive the global commit or rollback.
- **Transaction Manager(TM): **Define the scope of global transaction: begin a global transaction, commit or rollback a global transaction.
- **Resource Manager(RM): **Manage resources that branch transactions working on, talk to TC for registering branch transactions and reporting status of branch transactions, and drive the branch transaction commit or rollback.
A typical lifecycle of FESCAR managed distributed transaction:
- TM asks TC to begin a new global transaction. TC generates a XID representing the global transaction.
- XID is propagated through microservices' invoke chain.
- RM register local transaction as a branch of the corresponding global transaction of XID to TC.
- TM asks TC for committing or rollbacking the corresponding global transaction of XID.
- TC drives all branch transactions under the corresponding global transaction of XID to finish branch committing or rollbaking.
For more details about principle and design, please go to FESCAR wiki page.
- TXC: Taobao Transaction Constructor. Alibaba middleware team start this project since 2014 to meet dirstribuited transaction problem caused by application architecture change from monolithic to microservices.
- GTS: Global Transaction Service. TXC as a Aliyun middleware product with new name GTS was published since 2016.
- FESCAR: we start the open source project FESCAR based on TXC/GTS since 2019 to work closly with community in the future.