微服务中的事务控制和幂等的API设计

时光毁灭记忆、已成空白 提交于 2019-11-27 17:51:07

服务组成

  • transcations service
  • service A
  • service B
  • service ...

transcation service

负责管理事务性的操作,功能

  • 创建 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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!