目錄
- Github
- 微服務中數據一致性問題
- 分布式事務的解決方案
- Seata 高可用Setup
- Seata 配置遇到的問題
- Seata AT客戶端Debug
- 業務服務
- 總結
Github
結構
- account / business / order / storage 業務服務,參考Seata http://seata.io/zh-cn/docs/user/quickstart.html
業務服務 - devops服務的部署和環境的初始化
- doc文檔說明
微服務中數據一致性問題
分布式事務的解決方案
在此理論基礎上,有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
業務服務
- 技術棧:spring boot + Java 11 + Feign + Jpa + Gradle + mysql 8
- 各服務的Applicaiton.yaml
- 服務的啟動和執行日志 https://github.com/pjhu/seata/blob/master/doc/service-startup-log.MD
總結
雖然在配置中遇到了很多問題,網上都有響應的解決辦法。在配置Consul過程中,花費的大量的時間,使用Nacos相對順暢很多,可能是因為都是Ali這個開源大家族的,對Ali Cloud一套技術棧兼容更好。Consul的問題,期待后續的迭代會改善這個問題。