淘东电商项目(56) -支付系统分布式事务的解决方案

引言

在上一篇博客《淘东电商项目(55) -支付系统核心表设计》,主要讲解支付系统的数据表结构设计。

本文主要讲解支付系统的分布式事务的问题,以及解决方案。

本文目录结构:
l____引言
l____ 1. 支付流程
l____ 2. 分布式事务的几个问题

1. 支付流程

下面我贴出一个简单的支付流程:
在这里插入图片描述

以上是用户提交订单到支付系统的大致流程,当然里面涉及到最重要的一个问题就是分布式事务的问题,下面来讲解下。

2. 分布式事务的几个问题

① 在网络延迟情况下,回调接口出现重试时,如何保证接口幂等性问题?(举例:第三方系统异步回调成功支付结果给支付系统)

  • 答:使用全局id的方式,如果再次请求时,根据全局id查询数据库,如果发现已经修改了数据,确认已接收到消息( 重试机制是间隔性)。

②在网络延迟情况下,第三方系统没有及时的将支付结果通知给商户端,存在支付状态不一致时,如何解决?

  • 答:一般第三方系统会提供查询结构,可以调用第三方系统主动查询支付状态。

③商户系统回调接口中,如果存在代码问题,或者是商户系统宕机,导致第三方支付系统一直在重试? 最后放弃重试 如何解决呢?

  • 答:方法一:“手动补偿机制+日志记录 主动调用第三方接口查询”;方法二:“写一个定时Job,每天定时检查数据”。

④支付金额与商品金额如果不一致时,如何处理?

  • 答:在异步回调中,使用预支付金额与回调真实支付金额进行比对,如果不一致的话,说明该交易信息存在异常。可以使用日志+对账核查。

⑤支付服务如何与其他系统保证分布式事务问题?

  • 答:采用第三方支付流程实现补偿和重试机制遵循最终一致性 Base理论和CAP理论。

⑥与内部系统中出现分布式事务问题

  • 答:可以使用框架LCN、 MQ 、TCCC。
原创文章 2756 获赞 5261 访问量 70万+

猜你喜欢

转载自blog.csdn.net/qq_20042935/article/details/106080515