首先介绍一下实体电商通用的售后流程。
虚拟商品的售后通用流程如下:
在以上两个流程的处理流程有个共通的地方,就是一次操作需要涉及多个子流程的处理,这就是接下来需要讲的通用售后流程抽象。多个子流程的处理意味着要和多个子系统分别进行沟通处理退货、换货和退款。
这里就涉及到分布式系统的一致性问题了,售后模块作为资源的协调方,我们是否可以采用 TCC 的强一致性方案?答案是 No,成本有点高。普遍的做法是采用弱一致性方案保证最终一致性,我们可以考虑采用 Pipeline 机制。
在 Pipeline 机制中有三个基本概念:
一个 Pipeline 管理多个 Valve,多个 Valve 共享一个 Context 数据。用类图来表达如下:
为了管理处理的进度,我们每个 Valve 都是有状态的,那么所有的状态和就是整个 Pipeline 的状态。
TCC 是一种补偿事务方案,他要求对每个服务提供如下三个接口:
它的适用场景有以下两个要求:
举例说明是账户间转账、跨系统转账等资金类操作上。
但是它有一个比较明显的缺点就是实现成本比较高,需要协调的服务方越多,系统压力也就越大。
在售后场景中,TCC 是明显不适合的。对于整个售后流程说,各个环节也会出现资源占用导致处理失败的情况,受到 Try 的启发,我们不锁资源,只是在整个处理前挨个进行 qualification 资格检查,全部通过后再进入执行阶段。
责任链模式,用来处理相关业务逻辑的一条执行链,执行链上有多个节点,每个节点都可以处理请求,如果某个节点处理完毕就可以根据实际业务需求传递给下一个节点继续处理或者返回处理完毕的结果。
对于责任链模式,为什么有的实现和 Pipeline 很像。有人对责任链模式进行了如下两种分类:
从上面来看不纯责任链就是 Pipeline 模式,要说区别目前有如下结论。不纯责任链更偏重于数据的过滤和加工,Pipeline 模式是数据的加工,并且更突出节点的状态。
对于售后事件的各个环节处理,如果其中一个环节执行失败,之前的环节怎么办,有以下几种方式来解决:
以上四种方式各有利弊,需要根据实际场景来判定使用。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有