阅读 50

订单管理模块,服务解耦

怎么解除结合?

eg:有支付成功的订单,已经发货了。 用户要取消订单吗? 这个场景在商业设计上怎么解除结合?

可能涉及的业务:订单业务、物流业务、支付业务(仅暂时罗列这三项业务) ) )。

这三项业务可能出现的实际业务方案:

1、用户取消订单-----订单业务--- -订单服务;

2、用户(订单)退款----支付业务----支付服务;

3、发送的货物返回原路----物流业务----物流服务(或第三方物流服务);

按照事物发展的时间顺序排列上面三个业务场景应该是这样的:

用户开始取消订单----调用订单服务-----订单取消成功-----调用支付服务----退款开始成功----调用物流服务(货物返还

这种串行设计和服务呼叫(串行同步呼叫)的问题:

1 .调用链接越长,链接越长越容易出错(技术的实现等需要循环) )。

2 .执行效率低(并发效率下降,增加服务负担);

优化方法:

1、串口改为并口:如何做到并口? 1、2、3是并发的,1是失败的2和3似乎可以成功回滚或补偿事务。 1补偿失败了,不是很尴尬吗;

2、这是什么业务? 是订单取消业务,退款和物流是订单退款后提取的业务,是从属业务; 因此,先处理主营业务,在主营业务处理成功后,并行处理2和3; 解除主从业务的结合,采用什么样的技术手段来实现是另一回事;


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐