導航:首頁 > 源碼編譯 > 38個聲明式事務源碼

38個聲明式事務源碼

發布時間:2023-08-15 22:37:09

Ⅰ 分布式事務解決方案ServiceComb - Omega源碼閱讀與分享

ServiceComb已經是Apache的頂級項目,包含兩個組件,即 alpha 和 omega。

源碼地址:https://github.com/apache/servicecomb-pack

alpha 是事務協調中心,保存事務日誌,通過日誌協調各個分支

demo 裡面項目的各框架的例子:spring和bbo saga tcc

docs 設計文檔,最先應該熟悉的。

omega 負責與alpha通訊,子事務邏輯

pack-contracts gRPC通訊介面定義文件,通過中間文件生成客戶端與服務端面代碼,讓開發者不必關心通訊過程

web 用angular寫的web界面,可以查看事務的狀態。

我們主要關注的alpha和omega的代碼,gRPC知識是通訊基礎非常重要,最好先了解gRPC和probuf、Kyro序列化對閱讀源碼

還是很有幫助的。但通訊部分只是簡單帶過。

GlobalTxId全局事務ID標記子事務是否同屬性一個事務中

ParentTxId 父類的事務ID

localTxId子事務Id

Omega會面向切面編程的方式,向程序中注入相應的邏輯,初始化事務上下文OmegaContext,在事務處理的過程中向alpha報告事務狀態,

實現saga協調協議和TCC協調協議,下面就是omega客戶端要配置了三個信息

omega.enable=true或@EnableOmega的作用只標記開啟Omega,Omega在SpringBoot上初始化過程:

OmegaSpringAutoConfiguration 通過@Configuration,在Spring框架啟動時載入並配置

OmegaSpringConfig

作用:初始化各Bean,IdGenerator用來生成子事務Id Saga的事件Sender Tcc事件Sender回調CallbackContext

TransactionAspectConfig

對@SagaStart @Compensable註解AOP的切面編程對象初始

Omega內部機制:SagaStartAspect @SagaStart的AOP切面編程

TransactionAspect對@Compensable註解AOP切面編程

成功場景下,每個事務都會有開始和對應的結束事件。

TransactionAspect=>DefaultRecovery=>CompensableInterceptor

封裝了通訊組件:bbo fegin resttemplate servicecomb實現的通訊

這些組件各自通訊的基礎上,在服務之間相互調用時,把globalTxId和localTxId傳遞過去,並注入Context中

如:omega-transport->omega-transport-resttemplate

RestTemplateConfig 配置攔截器

:把當前的上下文的globalTxId和localTxId放到請求里

TransactionHandlerInterceptor 服務提供者,把resttemplate傳遞過來的globalTxId和localTxId放到當前上下文里,

pack-contracts->pack-contract-grpc

gRPC的介面服務定義文件:GrpcCommon.proto GrpcTccEvent.protogrpcTxEvent.proto:這些文件在protobuf命令直接編譯java代碼。

如何使用請看:proto文件gRpc基礎

謝謝能看到最後的人:我分享我是怎麼閱讀源碼的。源碼閱讀不能一上來就找到main入口一行一行的看。最先應該了解基本的組成架構、和用到了哪些技術棧,如果還用了你從來沒見的技術,建議先去學習這門新的技術,再回頭來看代碼,熟悉了各模塊相對應的功能後。我會找到一個切入口,猜一下它的實現方式,再根據猜測,帶著疑問,去找答案。如果對整個項目的模塊不是很清楚,最好先把源碼里的Demo正常的運行。通過這樣的簡單學習,一步步的深入。有的代碼的抽象是比較復雜的。可先跳過,當你對整個結構都非常了解了,這時再回頭去讀剩下的難點。最後有個總結有個對比就是最好結果。

閱讀全文

與38個聲明式事務源碼相關的資料

熱點內容
s曲線加減速演算法 瀏覽:399
可編程序控制器原理及應用答案 瀏覽:454
小熊編程教程 瀏覽:908
word轉換成pdf轉換器免費下載 瀏覽:608
群體智能基本演算法 瀏覽:370
可編程軟體分為哪兩種 瀏覽:340
格林什麼app可以看 瀏覽:697
飛盧app仙俠熱賣推薦怎麼樣 瀏覽:722
飛秋上傳文件到共享文件夾 瀏覽:691
伺服器的共享文件夾如何訪問 瀏覽:232
復盛螺桿壓縮機講解 瀏覽:332
柱在基礎插筋需要加密嗎 瀏覽:80
51單片機中斷寄存器 瀏覽:65
壓縮文件後有病毒怎麼辦 瀏覽:618
蘋果ipad怎麼登安卓王者賬號 瀏覽:862
街頭足球伺服器已滿是什麼意思 瀏覽:462
androidspeex迴音消除 瀏覽:133
加密會議什麼意思 瀏覽:34
ubuntu命令行聯網 瀏覽:7
37選7中獎概率及演算法 瀏覽:593