12、微服务中的事务与查询:同步、异步与Saga模式解析

微服务中的事务与查询:同步、异步与Saga模式解析

1. 同步与异步通信方式对比

1.1 同步方式下的卖单流程

在同步方式处理卖单时,订单服务负责协调其他服务的行为,按顺序调用一系列步骤,直至订单成功投放市场。具体步骤如下:
1. 创建订单
2. 预留库存
3. 确认预留
4. 确认收费
5. 订单投放
6. 确认投放
7. 投放市场
8. 收取费用

若任何一个步骤失败,订单服务需负责与其他服务发起回滚操作,如撤销收费。这种方式下,订单服务承担了大量责任:
- 明确知道需要调用哪些服务以及调用顺序。
- 需清楚当下游服务出现错误或因业务规则无法继续执行时应采取的措施。

虽然这种交互方式逻辑清晰、顺序明确,易于理解,但也使订单服务与其他服务紧密耦合,限制了其独立性,增加了未来变更的难度。

1.2 异步方式下的事件驱动设计

可以通过事件重新设计该场景。每个服务订阅感兴趣的事件,以确定何时执行相应工作:
1. 用户通过UI发出卖单请求,应用发布 OrderRequested 事件。
2. 订单服务获取该事件,处理后向事件队列发布 OrderCreated 事件。
3. 交易和费用服务获取 OrderCreated 事件,各自执行工作并发布事件通知完成情况。
4. 市场服务等待费用收取和库存预留的通知事件,两者都到达后,将订单投放市场,并发布最终事件。

事件驱动允许采用乐观的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值