Skip to content

🔥 Seata is an easy-to-use, high-performance, open source distributed transaction solution.

License

Notifications You must be signed in to change notification settings

whererose/seata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Seata: Simple Extensible Autonomous Transaction Architecture

Build Statuscodecovlicensemaven

What is Seata?

A distributed transaction solution with high performance and ease of use for microservices architecture.

Distributed Transaction Problem in Microservices

Let's imagine 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 the local transaction.

Monolithic App

Things have changed in a microservices architecture. The 3 modules mentioned above 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 the local transaction.

But how about the whole business logic scope?

Microservices Problem

How Seata do?

Seata is just a solution to the problem mentioned above.

Seata solution

Firstly, how to define a Distributed Transaction?

We say, a Distributed Transaction is a Global Transaction which is made up with a batch of Branch Transaction, and normally Branch Transaction is just Local Transaction.

Global & Branch

There are 3 basic components in Seata:

  • 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.

Model

A typical lifecycle of Seata managed distributed transaction:

  1. TM asks TC to begin a new global transaction. TC generates an XID representing the global transaction.
  2. XID is propagated through microservices' invoke chain.
  3. RM registers local transaction as a branch of the corresponding global transaction of XID to TC.
  4. TM asks TC for committing or rollbacking the corresponding global transaction of XID.
  5. TC drives all branch transactions under the corresponding global transaction of XID to finish branch committing or rollbacking.

Typical Process

For more details about principle and design, please go to Seata wiki page.

History

Ant Financial
  • XTS: Extended Transaction Service. Ant Financial middleware team developed the distributed transaction middleware since 2007, which is widely used in Ant Financial and solves the problems of data consistency across databases and services.

  • DTX: Distributed Transaction Extended. Since 2013, XTS has been published on the Ant Financial Cloud, with the name of DTX .

Alibaba
  • TXC: Taobao Transaction Constructor. Alibaba middleware team started this project since 2014 to meet the distributed transaction problems caused by application architecture change from monolithic to microservices.
  • GTS: Global Transaction Service. TXC as an Aliyun middleware product with new name GTS was published since 2016.
  • Fescar: we started the open source project Fescar based on TXC/GTS since 2019 to work closely with the community in the future.
Seata Community
  • Seata :Simple Extensible Autonomous Transaction Architecture. Ant Financial joins Fescar, which make it to be a more neutral and open community for distributed transaction, and Fescar be renamed to Seata.

Maven dependency

<seata.version>1.4.2</seata.version> <dependency> <groupId>io.seata</groupId> <artifactId>seata-all</artifactId> <version>${seata.version}</version> </dependency> 

Quick Start

Quick Start

Documentation

You can view the full documentation from the wiki: Seata wiki page.

Reporting bugs

Please follow the template for reporting any issues.

Contributing

Contributors are welcomed to join the Seata project. Please check CONTRIBUTING about how to contribute to this project.

Contact

Seata ecosystem

Contributors

This project exists thanks to all the people who contribute. [Contributors].

License

Seata is under the Apache 2.0 license. See the LICENSE file for details.

Who is using

These are only part of the companies using Seata, for reference only. If you are using Seata, please add your company here to tell us your scenario to make Seata better.

Alibaba Group蚂蚁金服阿里云中航信联通(浙江)中国铁塔滴滴中国邮政58集团南航TCL韵达快递科大讯飞奇虎360收钱吧太极计算机美的集团中国网安政采云浙江公安厅特步中通快递欧莱雅百库浙江烟草波司登凯京科技点购集团求是创新健康科蓝康美药业雁联学两手衣二三北京薪福社叩丁狼教育悦途出行国信易企签睿颐软件全房通有利网赛维安心保险科达科技会分期会找房会通教育享住智慧兰亮网络桔子数科蓝天教育烟台欣合阿康健康财新传媒新脉远乾动新能源路客精品民宿深圳好尔美浙大睿医深圳市云羿贸易科技有限公司居然之家深圳来电科技有限公司臻善科技中国支付通众网小贷谐云科技浙江甄品深圳海豚网汇通天下九机网有好东西南京智慧盾数跑科技拉粉粉汇通达易宝支付维恩贝特八库大诚若谷杭州华网信息深圳易佰易点生活成都数智索北京超图江西群享科技有限公司宋城独木桥网络有限公司唯小宝(江苏)网络技术有限公司杭州喜团科技海典软件中元健康科技有限公司宿迁民丰农商银行上海海智在线丞家(上海)公寓管理安徽国科新材科商银信支付钛师傅云广州力生信息杭州启舰科技有限公司微链上海美浮特江西群享科技有限公司杭州中威慧云医疗科技有限公司易族智汇(北京)佛山宅无限F5未来商店重庆雷高科技有限公司甄品信息科技行云全球汇跨境电商(杭州分部)世纪加华快陪练西南石油大学厦门服云信息科技有限公司领课网络美通社睿维科技有限公司郑州信源信息技术荣怀集团浙江群集大数据科技有限公司北京易点租有限公司浙江蕙康科技有限公司致远创想深圳智荟物联技术有限公司源讯中国武汉江寓生活服务有限公司大账房上海阳光喔教育科技有限公司北京新学道教育科技有限公司北京悦途出行网络科技公司上海意贝斯特信息技术有限公司御家汇广州社众软件浩鲸科技华宇信息中国云尚科技卫宁健康聚合联动熙菱信息鲸算科技杭州沃朴物联科技有限公司深圳市臻络科技有限公司白云电气

About

🔥 Seata is an easy-to-use, high-performance, open source distributed transaction solution.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java97.6%
  • ANTLR1.5%
  • JavaScript0.7%
  • Shell0.2%
  • Batchfile0.0%
  • Less0.0%