微服務中的事務控制和冪等的API設計

服務組成

  • 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 Atranscation 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
相關文章
相關標籤/搜索