分布式事务与通用服务解析
1. Saga 事务机制
Saga 是一系列事务的组合,要么全部成功完成,要么全部回滚。在 Saga 流程中,编排器会产生支付确认事件到酒店主题,酒店服务消费该事件并将预订状态改为“已确认”,接着酒店服务产生酒店房间确认事件到响应主题,预订服务编排器消费该事件后可执行下一步,如向用户发送成功响应或执行预订服务内部的其他逻辑。
步骤 1 - 13 是可补偿事务,步骤 14 是关键事务,步骤 15 及以后是可重试事务。若任何一个服务向预订主题返回错误响应,编排器可向其他服务产生事件以运行补偿事务。
2. 编排与协同模式对比
| 对比项 | 协同模式 | 编排模式 |
|---|---|---|
| 请求方式 | 并行请求,采用观察者面向对象设计模式 | 线性请求,采用控制器面向对象设计模式 |
| 与 Kafka 交互 | 启动 Saga 的服务与两个 Kafka 主题通信,产生一个主题启动分布式事务,消费另一个主题执行最终逻辑 | 编排器通过 Kafka 主题与每个服务通信,在 Saga 的每一步,编排器需向一个主题产生请求以开始该步骤,并从另一个主题消费以接收步骤结果 |
| 代码可读性 | 启动 Saga 的服务仅包含向 Saga 第一个主题产生和从最后一 |
超级会员免费看
订阅专栏 解锁全文
661

被折叠的 条评论
为什么被折叠?



