微服务工作流与函数即服务详解
1. 补偿工作流
并非所有工作流都需要完全可逆并受事务约束。在给定的工作流中,会出现许多不可预见的问题,很多情况下只能尽力完成工作流。若失败,可以采取事后补救措施。
票务和基于库存的系统常采用这种方法。例如,销售实体产品的网站在购买时可能没有足够库存来处理多个并发交易。零售商结算付款并评估可用库存后,可能发现没有足够库存来履行订单,此时有几种选择:
- 严格基于事务的方法:要求回滚最近的交易,即把钱退还给支付提供商,并通知客户商品已缺货,订单已取消。虽然技术上正确,但这可能导致糟糕的客户体验,降低客户与零售商之间的信任。
- 补偿工作流:可根据企业的客户满意度政策来补救这种情况。企业可以订购新库存,通知客户订单延迟,并提供下次购买的折扣代码作为道歉。客户可以选择取消订单或等待新库存到货。音乐、体育和其他演出场所,以及航空公司和其他票务旅行社,在门票超售的情况下经常采用这种方法。补偿工作流并非总是可行,但对于处理面向客户产品的分布式工作流操作通常很有用。
2. 不同工作流模式对比
| 工作流模式 | 特点 | 适用场景 |
|---|---|---|
| 编排(Choreography) | 允许业务单元和独立工作流之间松耦合 | 适用于简单的分布式事务和简单的非事务性工作流,微服务数量少且业务操作顺序不太可能改变的情况 |
| 编排式事务和工作流(Orc |
超级会员免费看
订阅专栏 解锁全文
17

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



