微服务中的事务控制和幂等的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
相关文章
相关标签/搜索