- 用户对聚合层服务发起请求后,经过 sidecar 的拦截,生成
GlobalTransaction数据,并产生全局唯一标记XID。
- 调用订单服务时,通过 HTTP Header 传递
XID到订单服务上下文 (Context)。 - 请求经过 sidecar 拦截,检测 HTTP Header 中存在
XID,则将请求 Body 序列化后,作为BranchTransaction携带的数据一并持久化到 ETCD。
- 调用订单服务时,通过 HTTP Header 传递
XID到订单服务上下文 (Context)。 - 请求经过 sidecar 拦截,检测 HTTP Header 中存在
XID,则将请求 Body 序列化后,作为BranchTransaction携带的数据一并持久化到 ETCD。
- 回到聚合层服务,业务逻辑执行完毕,如果业务执行成功没有异常,则根据
XID获取BranchTransaction,使用其携带的请求 Body 数据调用对应的Commit请求;如果业务执行失败,则根据XID获取BranchTransaction,使用其携带的请求 Body 数据调用对应的Rollback请求。
