14、事件驱动架构中的流程建模与模式选择

事件驱动架构中的流程建模与模式选择

1. 工作流回滚的复杂性

在对工作流进行建模时,回滚过程的复杂程度不一。例如,如果欺诈验证是第一步,那么可能无需进行任何补偿操作,也不需要回滚过程。在设计 Saga 时,关键是要考虑如何尽量减少回滚的可能性以及所需的补偿操作数量。

导致步骤失败的原因可分为两类:
- 领域验证或业务规则问题 :这种情况下,补偿操作通常足以使系统恢复到可靠状态。
- 技术问题 :如服务离线、无法访问、数据库连接失败或代码缺陷等。例如,在欺诈验证失败后,如果库存服务无法访问,就无法撤销之前 Saga 步骤所做的库存更改。

事件驱动服务的自然解耦和异步特性,使系统对瞬态故障更具弹性,便于构建更可靠的流程。在异步流程中,操作重试更容易,即使重试失败,事件也会持久化在事件流中。只要事件处理是幂等的,就可以重新处理相同的事件。而在同步过程中,Saga 可能会一直等待,直到重试成功,或者需要额外的流程来重试。

2. 事件驱动编排模式

编排模式使用一个主组件来管理流程步骤。这个组件指示其他服务启动新步骤,并在需要时触发补偿操作,类似于监督整个过程并将任务分配给下属服务的主管。

以订单处理为例,订单服务作为编排器,协调库存、定价和运输服务之间的交互。其流程如下:
1. 订单服务接收订单提交请求。
2. 订单服务请求库存服务更改库存。
3. 库存服务处理后发布库存更改事件,订单服务根据该事件推进到下一步,请求定价服务向客户收费。
4. 定价服务处理后发布客户已收费事件,订单服务再请求运

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值