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

熱點內容
mysql命令行版本 瀏覽:303
如何進入itunes找文件夾 瀏覽:832
CAD中重復命令使用 瀏覽:477
心智pdf 瀏覽:475
網站電台直播間源碼 瀏覽:852
文件夾14c和18c的區別 瀏覽:34
android隱式調用 瀏覽:667
plc的編程指令邊沿繼電器 瀏覽:723
voc文件夾 瀏覽:864
租廣東聯通伺服器注意什麼雲空間 瀏覽:934
javascript高級程序設計pdf 瀏覽:291
pwm單片機原理 瀏覽:346
ai演算法在線修復圖片 瀏覽:981
scratch編程中如何做射擊游戲 瀏覽:478
at89c51編程器 瀏覽:343
項目經理叫醒程序員 瀏覽:344
autocad旋轉命令 瀏覽:661
手機版wpsoffice怎麼打包文件夾 瀏覽:581
在成都學車用什麼app 瀏覽:820
grep命令管道 瀏覽:428