seata xid是什么_Seata 分布式事务框架
前言
上一篇文章《Seata 之 rm-datasource 源碼解讀》發(fā)出后。有很多同學(xué)對(duì) Seata 是什么還不夠了解,今天我們就起來認(rèn)識(shí)一下它。
簡(jiǎn)介
Seata 是一款由阿里巴巴與螞蟻金服共同開源的分布式事務(wù)框架。由最初的Fescar(Fast & Easy Commit And Rollback)框架更名而來。其設(shè)計(jì)初衷是:讓分布式事務(wù)能夠像本地事務(wù)一樣簡(jiǎn)單,高效。
什么是分布式事務(wù)?
在上面介紹中,提到了分布式事務(wù),它并不是一個(gè)新詞。但在介紹之前,我覺得有必要先回顧下。事務(wù)是我們熟悉的,它有四大特性,分別是:原子性,一致性,隔離性,持久性。由底層數(shù)據(jù)庫提供支持,如MySQL中的 Innodb 存儲(chǔ)引擎。在單體應(yīng)用中,甚至是在單例數(shù)據(jù)庫應(yīng)用中,使用數(shù)據(jù)庫本身提供的事務(wù)就能解決大部分:數(shù)據(jù)不一致等一系列問題。架構(gòu)如下圖所示:
隨著互聯(lián)網(wǎng)應(yīng)用的發(fā)展,單體應(yīng)用架構(gòu)已不足以應(yīng)付。且呈現(xiàn)出諸多弊端,例如:多團(tuán)隊(duì)開發(fā)效率不高,模塊之間強(qiáng)耦合,打包部署慢,等問題。后面大家采用了分而治之的方法,就有了SOA架構(gòu),再到現(xiàn)在盛行的微服務(wù)架構(gòu)。
當(dāng)然,當(dāng)單一數(shù)據(jù)庫實(shí)例不足以支撐現(xiàn)有的業(yè)務(wù)時(shí),就出現(xiàn)了分庫分表。通常的做法是:將不同的業(yè)務(wù)分為不同的數(shù)據(jù)庫實(shí)例。也就有了如下的分布圖:
在這樣的架構(gòu)下。原本數(shù)據(jù)庫提供的本地事務(wù)已經(jīng)相形見絀,并提出了一個(gè)新的挑戰(zhàn)。在分布式架構(gòu)下,如何保證數(shù)據(jù)的一致性,原子性等等 ?
CAP 理論
在單體應(yīng)用中,有數(shù)據(jù)庫本身提供的事務(wù)保駕護(hù)航,我們可以更加關(guān)注的編寫業(yè)務(wù)代碼。在分布式應(yīng)用中,在面對(duì)各個(gè)節(jié)點(diǎn)狀態(tài)同步時(shí),提出了一個(gè)新的理論,它就是CAP 理論。
CAP 理論最早由:加州大學(xué)的計(jì)算機(jī)科學(xué)家 Eric Brewer 在 1998 年提出,分布式系統(tǒng)有三個(gè)指標(biāo):
- Consistency (一致性)
- Availability (可用性)
- Partition tolerance (分區(qū)容忍性)
Eric Brewer 說,這三個(gè)指標(biāo)不可能同時(shí)做到。
其架構(gòu)圖如下所示:
Seata 的原理
在 Seata中,是如何定義分布式事務(wù)的呢?從上圖改造而來,如下圖所示:
在 Seata 中,將 Storage 服務(wù)看成一個(gè)本地事務(wù),Business 服務(wù)看成一個(gè)本地事務(wù),將 Order 服務(wù)看成一個(gè)本地事務(wù),將 Account 服務(wù)看成一個(gè)本地事務(wù),其構(gòu)成了一個(gè) Distributed Transaction,由 TC 統(tǒng)一協(xié)調(diào)。在 Seata 中稱之為 “Global Transaction”,如下所示:
在 Seata 中有三個(gè)基礎(chǔ)組件:
- Transaction Coordinator(TC)(協(xié)調(diào)者):維護(hù)全局和分支事務(wù)的狀態(tài),驅(qū)動(dòng)全局提交或回滾。
- Transaction Manager(TM)(事務(wù)管理):定義全局事務(wù)的范圍,開啟全局事務(wù),提交 或 回滾一個(gè)全局事務(wù)。
- Resource Manager(RM)(資源管理):管理分支事務(wù)資源。與 TC 通訊并報(bào)告分支事務(wù)狀態(tài),管理本地事務(wù)的提交與回滾。
Seata 的生命周期
在 Seata 中,一個(gè)典型的生命周期如下所示:
相關(guān)閱讀:
《Dubbo 線程池源碼解析》
《你所不知道的 BigDecimal》
《ThreadPoolExecutor 原理解析》
《Java線程池ThreadPoolExecutor》
總結(jié)
以上是生活随笔為你收集整理的seata xid是什么_Seata 分布式事务框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个推通知栏修改_浙大一院五一劳动节放假通
- 下一篇: guid oracle 生成不重复_可空