Dubbo分布式接口调用怎么设计幂等

记得之前面试被问到,你们接口是怎么实现幂等性的,当时我一脸懵逼,幂等是什么?我怎么没听过o(╥﹏╥)o,在网上各种查找资料,现在做个整理。

 

什么是幂等性?

就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。

举例:

支付场景,订单支付成功后,在返回结果的时候网络发生异常,这个时候是扣了钱的,用户再次点击支付,支付成功然后返回结果会发现多扣了一次金额,资金流水也产生了两条记录。

设计接口幂等性方案

不同场景接口幂等设计是不一样的,如果只是单一的支付操作,我们可以创建一个唯一性ticketId(就是门票),门票只能使用一次。

场景一,单一支付接口,具体步骤如下:

1、异步请求创建ticketId

2、调用支付接口传入ticketId

3、根据ticketId查询是否操作过,如果操作过就直接返回结果,如果没有操作过就继续支付并保存结果。

4、返回结果到客户端

场景二,先支付后修改订单状态,具体实现步骤:
1、查询订单支付状态(支付状态:已支付,未支付)

2、如果已经支付直接返回结果。

3、如果未支付状态就调用支付并修改订单状态

4、返回结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值