很多面試官都喜歡問一些“談談你對xxx技術的理解”。
大家遇到這種問題時,是不是完全不知道從何說起。
那麼我們來看一下,普通人和高手是如何回答這個問題的?
普通人:
Seata是用來解決分散式事務問題的框架。是阿里開源的中介軟體。
實際專案中我沒有用過,我記得Seata裡面有幾種事務模型,有一種AT模式、還有TCC模式。
然後AT是一種二階段提交的事務,它是採用的最終一致性來實現資料的一致性。
高手:
1.在微服務架構下,由於資料庫和應用服務的拆分,導致原本一個事務單元中的多個DML操作,變成了跨程式或者跨資料庫的多個事務單元的多個DML操作,而傳統的資料庫事務無法解決這類的問題,所以就引出了分散式事務的概念。
2.分散式事務本質上要解決的就是跨網路節點的多個事務的資料一致性問題,業內常見的解決方法有兩種
(1)強一致性,就是所有的事務參與者要麼全部成功,要麼全部失敗,全域性事務協調者需要知道每個事務參與者的執行狀態,再根據狀態來決定資料的提交或者回滾!
(2)最終一致性,也叫弱一致性,也就是多個網路節點的資料允許出現不一致的情況,但是在最終的某個時間點會達成資料一致。基於CAP定理我們可以知道,強一致性方案對於應用的效能和可用性會有影響,所以對於資料一致性要求不高的場景,就會採用最終一致性演算法。
3.在分散式事務的實現上,對於強一致性,我們可以通過基於XA協議下的二階段提交來實現,對於弱一致性,可以基於TCC事務模型、可靠性訊息模型等方案來實現。
4.市面上有很多針對這些理論模型實現的分散式事務框架,我們可以在應用中整合這些框架來實現分散式事務。
而Seata就是其中一種,它是阿里開源的分散式事務解決方案,提供了高效能且簡單易用的分散式事務服務。
Seata中封裝了四種分散式事務模式,分別是:
·AT模式,是一種基於本地事務+二階段協議來實現的最終資料一致性方案,也是Seata預設的解決方案 。
·TCC模式,TCC事務是Try、Confirm、Cancel三個詞語的縮寫,簡單理解就是把一個完整的業務邏輯拆分成三個階段,然後通過事務管理器在業務邏輯層面根據每個分支事務的執行情況分別呼叫該業務的Confirm或者Cacel方法。
·Saga模式,Saga模式是SEATA提供的長事務解決方案,在Saga模式中,業務流程中每個參與者都提交本地事務,當出現某一個參與者失敗則補償前面已經成功的參與者。
·XA模式,XA可以認為是一種強一致性的事務解決方法,它利用事務資源(資料庫、訊息服務等)對 XA 協議的支援,以 XA 協議的機制來管理分支事務的一種 事務模式。
從這四種模型中不難看出,在不同的業務場景中,我們可以使用Seata的不同事務模型來解決不同業務場景中的分散式事務問題,因此我們可以認為Seata是一個一站式的分散式事務解決方案。
總結
你是否通過高手的回答找到了這類問題的回答方式呢?
面試的時候遇到這種寬泛的問題時,先不用慌, 首先自己要有一個回答的思路。
按照技術的話術,就是先給自己大腦中的知識建立一個索引,然後基於索引來定位你的知識。
我對於這類問題,建立的索引一般有幾個:
它是什麼?
它能解決什麼問題?
它有哪些特點和優勢?
它的核心原理,為什麼能解決這類問題?
大家對照這幾個索引去回答今天的這個面試題,是不是就更清晰了?
好的,本期的普通人VS高手面試系列就到這裡結束了,喜歡的朋友記得一鍵三連,加個關注。
我是Mic,一個工作了14年的Java程式設計師,我們們下篇文章再見。