服務組成
- transcations service
- service A
- service B
- service ...
transcation service
負責管理事務性的操做,功能api
- 建立 transcation,事務 struct ({ api_list: [{ status, put_api_from_service_A, get_api_from_service_A}, ...]})
- 建立 job, 執行一次 transcation 的記錄 struct (transaction_id, status, api_from_service_A_params, api_from_service_A_returned_data), status 有 (pending, successed, failure, cancelled)
- 其餘的管理接口
other services
提供冪等的api,api 具備標識任務 success or failure 的返回接口
事務控制流程
- 在 transcation service 上定義一個 transaction 包含 service A 的 api
- service A 在 transcation service 建立一個 job,job status 爲 pending
- transcation service 經過註冊的 get api 獲取 service A 的數據存入 api_from_service_A_returned_data
- transcation service 執行 put api,根據 api 更新 job status
- if job status is failure, 使用 api_from_service_A_returned_data 做爲參數執行 put_api_from_service_A