分布式事務Seata

目錄

  • Github
  • 微服務中數據一致性問題
  • 分布式事務的解決方案
  • Seata 高可用Setup
  • Seata 配置遇到的問題
  • Seata AT客戶端Debug
  • 業務服務
  • 總結

Github

https://github.com/pjhu/seata

結構

微服務中數據一致性問題

數據一致性

分布式事務的解決方案

DTP

在此理論基礎上,有TCC, Saga, 分布式消息等分布式事務的解決方案

Seata 高可用Setup

Consul

目前Consul Setup有一些問題,可以參考Github issue
https://github.com/seata/seata/issues/3777

當時希望采用Consul來作為服務注冊中心,調試了很久,環境終于Setup完,但是發現了一些錯誤,最終放棄修正問題,有一些公司修正了問題,但是沒找到開源的代碼,官方還沒有解決。為了快速驗證功能,轉而去Setup naocos的配置。

本地測試環境Setup: https://github.com/pjhu/seata/tree/master/devops/local/consul
K8s 測試環境Setup: https://github.com/pjhu/seata/tree/master/devops/k8s-seata/consul
Setup遇到的問題:https://github.com/pjhu/seata/blob/master/doc/setup-consul-qa.MD

Nacos

本地測試環境Setup: https://github.com/pjhu/seata/tree/master/devops/local/nacos
K8s 測試環境Setup: https://github.com/pjhu/seata/tree/master/devops/k8s-seata/nacos
Setup遇到的問題:https://github.com/pjhu/seata/blob/master/doc/setup-nacos-qa.MD

注意事項

  • local 環境配置,需要注意Docker-compose file 中Seata的IP, 本地的IP會經常的變更

Seata 配置遇到的問題

可參考: https://github.com/pjhu/seata/blob/master/doc/setup-seata-qa.MD

Seata AT客戶端Debug

可參考:https://github.com/pjhu/seata/blob/master/doc/source-code-debug.md
主要看了下分布式事務Xid的傳遞,由于使用的Feign做服務間調用,Feign在執行采用了SeataFeignClient,替換了client, 后續服務通過Spring MVC 執行 SeataHandlerInterceptor,解析xid 放入RootContext中,更上下文使用,最終會存入undo-log

業務服務

總結

雖然在配置中遇到了很多問題,網上都有響應的解決辦法。在配置Consul過程中,花費的大量的時間,使用Nacos相對順暢很多,可能是因為都是Ali這個開源大家族的,對Ali Cloud一套技術棧兼容更好。Consul的問題,期待后續的迭代會改善這個問題。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容