Apache ServiceComb Saga 是一個微服務應用的數據最終一致性解決方案mysql
中文官方地址:https://github.com/apache/servicecomb-saga/blob/master/README_ZH.mdgit
Saga Pack 架構是由 alpha 和 omega組成,其中:github
alpha能夠簡單理解是事務處理的服務端,spring
omega是須要進行事務處理的客戶端的SDK,在個人項目裏,就是.net core應用程序的sdk,sql
幸運的是官方提供了C#語言版本Omega 可參見 https://github.com/OpenSagas-csharp/servicecomb-saga-csharpdocker
數據庫官方目前提供了兩個:postpresql和mysql, 和alpha同樣均可以經過docker快速部署, 數據庫
下面開始部署服務端alpha-server:apache
官方提供了用於快速部署的docker compose文件:api
version: '2' services: postgres: image: postgres container_name: postgres ports: - "5432:5432" environment: POSTGRES_USE: saga POSTGRES_USER: saga POSTGRES_PASSWORD: password networks: - saga alpha-server: image: djlnet/alpha-server:0.3.0-SNAPSHOT container_name: alpha-server ports: - "8080:8080" - "8090:8090" environment: JAVA_OPTS: -Dspring.profiles.active=prd -Dspring.datasource.url=jdbc:postgresql://postgres/saga?useSSL=false networks: - saga depends_on: - postgres networks: saga: driver: bridge
也就是說咱們的環境首先要安裝docker 和 docker-compose網絡
安裝成功後,咱們運行docker-compose up -d命令
經過docker ps 能夠看到容器已經啓動:
經過netstat -ntlp 能夠看到端口已經開啓:
接下來,咱們能夠Navicat 12 for PostgreSQL 查看數據庫是否正常
下載安裝地址:https://www.navicat.com/en/download/navicat-premium
安裝成功後,建立鏈接,測試鏈接:
alpha-server運行成功的標誌,目前尚未一個UI,只能經過端口號是否運行,來判斷了。
服務端的工做就已經完成了。
下面是客戶端:能夠直接參考上面連接中的github項目,裏面提供了三個測試項目:
主要的工做以下:
代碼很是簡單:
每一個項目添加代碼:
在action方法上添加特性:SagaStart:
事務補償特性和補償方法:
部署完成後,就能夠測試了,接口跑通後,就能夠查看數據庫那三張表: