這是一道關于Seata的Java面試題
Seata在大廠也是屬于高頻的面試題,有一位3年工作經驗的小伙伴被問到一道這樣的面試題,說“談談你對Seata的理解”。那么,今天我給大家來聊一聊。
另外,我花了很長時間,準備了一份500頁的PDF面試資料文檔和一份10W字的Java總結面試題和答案,
1、Seata是什么
在微服務架構下,由于數據庫和應用服務的拆分,導致原本一個事務單元中的多個 DML 操作,變成了跨進程或者跨數據庫的多個事務單元的多個 DML 操作,而傳統(tǒng)的數據庫事務無法解決這類的問題,所以就引出了分布式事務的概念。
ENTER TITLE
分布式事務本質上要解決的就是跨網絡節(jié)點的多個事務的數據一致性問題,業(yè)內常見的解決方法有兩種:
ENTER TITLE
1、強一致性
就是所有的事務參與者要么全部成功,要么全部失敗,全局事務協(xié)調者需要知道每個事務參與者的執(zhí)行狀態(tài),再根據狀態(tài)來決定數據的提交或者回滾!
2、最終一致性,也叫弱一致性
也就是多個網絡節(jié)點的數據允許出現(xiàn)不一致的情況,但是在最終的某個時間點會達成數據一致。
基于 CAP 定理我們可以知道,強一致性方案對于應用的性能和可用性會有影響,所以對于數據一致性要求不高的場景,就會采用最終一致性算法。
在分布式事務的實現(xiàn)上,對于強一致性,我們可以通過基于 XA 協(xié)議下的二階段提交來實現(xiàn),對于弱一致性,可以基于 TCC 事務模型、可靠性消息模型等方案來實現(xiàn)。市面上有很多針對這些理論模型實現(xiàn)的分布式事務框架,我們可以在應用中集成這些框架來實現(xiàn)分布式事務。而 Seata 就是其中一種,它是阿里開源的分布式事務解決方案,提供了高性能且簡單易用的分布式事務服務。
1、Seata事務模式
Seata 中封裝了四種分布式事務模式,分別是:AT模式、TCC 模式、Saga 模式和XA 模式。下面我給大家詳細介紹一下:
第1種:AT 模式,是一種基于本地事務+二階段協(xié)議來實現(xiàn)的最終數據一致性方案,也是Seata 默認的解決方案
第2種:TCC 模式,TCC 事務是 Try、Confirm、Cancel 三個詞語的縮寫,簡單理解就是把一個完整的業(yè)務邏輯拆分成三個階段,然后通過事務管理器在業(yè)務邏輯層面根據每個分支事務的執(zhí)行情況分別調用該業(yè)務的 Confirm 或者 Cacel 方法。
第3種:Saga 模式,Saga 模式是 SEATA 提供的長事務解決方案,在 Saga 模式中,業(yè)務流程中每個參與者都提交本地事務,當出現(xiàn)某一個參與者失敗則補償前面已經成功的參與者。
第4種:XA 模式,XA 可以認為是一種強一致性的事務解決方法,它利用事務資源(數據庫、消息服務等)對 XA 協(xié)議的支持,以 XA 協(xié)議的機制來管理分支事務的一種事務模式。
從這四種模型中不難看出,在不同的業(yè)務場景中,我們可以使用 Seata 的不同事務模型來解決不同業(yè)務場景中的分布式事務問題,因此我們可以認為 Seata是一個一站式的分布式事務解決方案。
以上就是我對Seata的理解!面試的時候經常會遇到這種寬泛的面試題,一般就是問“談談你對XX的理解”。遇到這類面試題,先不用慌,我告訴大家一個回答的思路??梢园凑占夹g發(fā)展的邏輯,就是先在自己的大腦中的建立一個知識索引,然后基于索引來定位你的知識。
比如,對于這類問題,一般可以建立一個這樣的思維邏輯:
它是什么?
它能解決什么問題?
它有哪些特點和優(yōu)勢?
它的核心原理是什么?
為什么它能解決這類問題?
大家對照這個邏輯去回答這類面試題,是不是感覺思路異常更清晰呢?
最后,我把之前分享的資料全部整理成了文字,希望能夠以此來提高各位粉絲的通過率。? ?