也谈组合交易

       组合交易是把积分、红包、余额、银行卡、白条等等组合起来共同完成一笔订单的支付,而且这些功能往往来自于不同的系统,是一种天然的强分布式事务场景。

        针对强一致性分布式事务,可能大多数人首先想到的都是XA,TCC,以及阿里开源的Seata,可能也有人认为MQ也是最终一致性的选择,但不适合用在这种3s内完成交易的场景,还些人把转账场景认为是刚性事务的必然,是分布式事务必然的用武之地。但,有没有可能,转账根本没有涉及分布式事务呢?

        首先,有个基本的认知,跨系统的绝对强一致是不存在的,就如同缓存一致性方案这个扯淡的问题,追求跨系统绝对的强一致,必然是在主系统发起对下游系统的调用后,若下游系统未反馈结果,就去主动查询,这样想在3s内完成交易,真的太难了,当然土豪除外。

       其次,组合交易场景的核心诉求是:1、要在3s内完成交易。2、要么全部成功,要么全部失败。除此之外,再无其它。

       因此,为了保障绝对的刚性事务,且短时间内完成交易,最好的方法是使用同一套系统记账,利用数据库的事务来搞定。交易系统依据设定好的规则,先去各下游系统查询可支付的金额,若查询失败或者各渠道余额加起来后,仍不足支付金额,就直接终止交易。若确认有足够的支付金额,就调记账系统记账,记账成功后,再发送交易成功通知给下游系统,让下游系统做后续处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值