你是否學習了微服務架構spring cloud、dubbo,但是分布式事務卻沒有了解過?
你是否嘗試學習了分布式的概念,但是學習完卻還不知所以然,一頭霧水?
你是否嘗試使用了txlcn、fescar/seata,但是卻不知道它們的原理?
如果你存在類似的疑問,那麼你來這裡就對了。
你不努力讓自己過上想要的生活, 以後就會用大把的時間去應付自己不想要的生活。
記得幾年前 ,那時候微服務spring cloud也剛出來沒多久,我有幸,在早期就了解了spring cloud,學習了spring cloud中的各個元件:註冊中心eureka、服務消費ribbon、feign、閘道器zuul/gateway、配置中心config等等。
學習完之後,感覺自己都膨脹了,也湊巧有乙個面試機會,也是就去挑戰了一下。在問到微服務架構相關的都回答的比較順暢,但是在問到:微服務中的分布式事務是怎麼解決的,瞬間就矇圈了,在面試中直接回答不會,也不好,於是乎,就回答說:這塊是別的同事設計的,自己不是很清楚怎麼落地實施的。很明顯這樣的回答,自己都不滿意,所以這次面試,也就不了而終了。
知之為知之,不知為不知,是知也。對於不懂的知識,就要敢於發問,不懂裝懂,似懂非懂,都是在無形中,讓自己退步了。
1.01和0.99,到底相差多少。表面看起來只是相差了0.02,實在是微乎其微,不足道哉。但是當與365乘方後,結果卻是天差地別。
對於分布式事務,如果要學習的話,那麼都要學習什麼呢?
基礎概念-初入江湖
磨刀不誤砍柴工,要對於分布式具體的方案有乙個透徹的了解,那麼基礎概念就是你第一步要了解的,一開始的時候,都需要了解什麼呢?
(1)事務的基本概念: 什麼是事務? 本地事務?資料庫事務?分布式事務?
(2)事務的四大特性acid:事務的四大特性、四大特性在資料庫層面是怎麼體現的。
(3)分布式產生的場景。
(4)分布式事務的理論: cap理論、base理論。
2pc/3pc-征戰沙場
有了基本理論知識的加持,就可以開始學習具體的方案了,分布式提出的方案一就是兩階段提交2pc,那麼對於tcc要學習什麼呢?
(1)概念:要了解什麼是2pc/3pc?
(2)方案原理:xa方案、seata方案、txlcn的lcn方案。
(3)實戰:對於方案還是要進行實際操作下,才能有乙個感官的認知。
tcc-勇者無敵
對於2pc中的方案的,是在實際專案還是使用的比較多的,但是如果碰到不同資料來源的問題,那麼2pc可能就無能為力了(2pc
的分布式事務解決方案大多依賴於本地事務),那麼如果在專案中有mysql、redis、mongodb的話,那麼2pc就無法控制這個流程的分布式事務了,但是tcc方案就是一種不太依賴本地事務的方案。
(1)概念: 要了解什麼是tcc ?
(2)tccc的異常處理:冪等性、空回滾、懸掛的產生原因以及怎麼處理。
(3)tcc的常用框架:了解tcc的常用框架,如何使用txlcn的tcc進行實戰。
可靠訊息最終一致性-所向披靡
上面的方案基本上都是使用同步的思路,就是整個事務在同乙個請求當中,a服務通過遠端呼叫b服務,a服務需要b服務執行完成之後才能進行返回,有些流程中,我們可能不關心當下下個服務的執**況,比如使用者註冊送積分。
送積分的這個事情就可以使用非同步的方式進行操作,我們的核心就是確保使用者能夠註冊成功,減少使用者的等待時間,那麼我們就可以:使用者填寫完資訊,發起註冊流程,註冊流程在非同步通知積分服務進行積分操作,在這個非同步的過程中,要確保訊息能夠送達到積分服務,也要確保積分服務能夠接收到訊息,這就是可靠訊息最終一致性要解決的問題。
那在學習可靠訊息最終一致性的解決方案的話,都需要學習什麼呢?
(1)概念:了解清楚什麼是可靠訊息最終一致性。
(2)可靠訊息最終一致性的方案:通過本地訊息表和rocketmq進行可靠訊息最終最終一致性的方案有什麼區別,以及怎麼使用rocketmq進行實戰。
最大努力通知-叱吒風雲
在學會了可靠訊息最終一致性之後,在學習最大努力通知,那麼轉換思路問題了,只要稍微轉換下可靠訊息最終一致性的**就是最大努力通知了。
以上這些就是要學習分布式事務要了解的技術知識,一方面是自己學習,逐個攻克各個知識點,另外一方面就是站在前人的肩膀上進行學習。
博主對於這塊知識也錄製了相應的課程,如果有需要的可以進行報名學習,感謝大家的支援。
知識大綱
使用技術
為自己的人生負責,為自己的夢想買單,快點進「閱讀原文
」上課了哦~
人生捷徑傳送門:
分布式 分布式事務
是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...
分布式事務 分布式事務的實現
如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...
分布式之分布式事務
被人問到分布式事務,之前學rabbitmq 的時候學到過rabbitmq 高階的事務,因為沒有用過,所有沒有回答好。這裡總結一下。1.單機版事務。事務的四大特性 acid a.原子性 b.一致性 c.隔離性 d.永續性 單機事務可以通過設定事務的隔離級別 參見spring 的事務隔離級別 2.分布式...