47、微服务架构中的数据一致性与相关组件使用指南

微服务架构中的数据一致性与相关组件使用指南

1. 订单与库存领域的微服务拆分及一致性问题

在处理订单时,会更新订单所有行项目对应的库存,但有时订单未成功创建,部分行项目的库存会被恢复。当微服务崩溃时,使系统恢复到最终一致状态所需的“引力”消失,系统可能无法达到最终一致性,因为没有使微服务栈状态持久化,导致恢复系统语义一致状态的关键状态丢失。

原本 OrderCommandHandler 中的 handleNewOrder 处理相当于对订单和库存实体进行的 ACID 式操作。但经过重构,代码过渡到 OrderController 中的 createOrder HTTP POST 方法,此处理相当于 BASE 风格,但没有内在的故障转移特性。采用跨订单和库存聚合根实体的 BASE 风格事务后,订单和库存领域可相互独立,必要时可拆分为各自的微服务。

当订单和库存领域拆分为不同微服务时, OrderCommandHandler InventoryCommandHandler OrderController 不再共置。此时,向一个或多个命令处理程序发送并等待的操作需跨网络分区执行,其确定性会丢失。若继续像 InventoryCommandHandler 那样手动建模 BASE 事务,失败的可能性会增加。

2. Saga 事务实现确定性最终一致性

由于 Saga 事务具有以下特性,在这种场景下需要使用 S

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值