服务组成
- 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