導航:首頁 > 源碼編譯 > 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個聲明式事務源碼相關的資料

熱點內容
red攝影機壓縮比 瀏覽:409
app賬號怎麼弄 瀏覽:822
hc0551單片機 瀏覽:754
噴淋管道支架演算法 瀏覽:591
壓縮機壞了電腦無法啟動 瀏覽:240
不小心加密了怎麼去掉 瀏覽:954
linux命令行連接db2 瀏覽:897
洪恩app怎麼設置護眼模式 瀏覽:970
小猿口算app怎麼選課時 瀏覽:420
手機號脫敏加密解密 瀏覽:168
台電加密u盤多少錢 瀏覽:546
控制面板文件夾怎麼隱藏 瀏覽:845
opticspdf 瀏覽:592
抖店app怎麼快速退保證金 瀏覽:971
阿里雲伺服器的密碼在哪改 瀏覽:907
如何刪除集群伺服器 瀏覽:809
程序員方向知乎 瀏覽:153
華為手錶運動健康app怎麼弄 瀏覽:1000
ftp文件夾形式 瀏覽:666
房本抵押銀行沒有解壓 瀏覽:535