mysql 幂等性_接口设计之幂等性

接口幂等性在分布式系统中至关重要,防止因网络重试导致的重复操作。文章通过场景分析强调其重要性,如重复支付、退款等。幂等性意味着同一请求执行一次或多次结果相同。查询、删除操作天然幂等,新增/更新需特殊处理。设计幂等接口的方法包括:业务逻辑判断、分布式锁、排他锁和排重表。前端也可限制表单重复提交,提高请求有效性。
摘要由CSDN通过智能技术生成

接口幂等性的重要性

最近看到一个线上问题,意识到API设计要考虑很多,其中包括接口幂等性。

列举几个场景,突出本文核心思想。

场景1:请求正确执行了支付操作,但因为网络的原因,没有拿到支付结果,于是再去请求支付,造成重复支付。 场景2:恶意请求退款等操作,重复退款等。 场景3:对于一些异步回调的系统服务,重复处理回调结果。

分布式系统及微服务下,因为网络原因而导致调用系统未能获取到确切的结果从而导致重试,这就需要被调用系统接口具有幂等性。

何为接口幂等性

简单的说接口幂等性,就是执行一次请求,和执行多次请求所产生的结果是一致的。

哪些操作需要保证接口幂等性

查询,查询一次和查询多次,在数据不变的情况下,查询结果是一样的。select是天然的幂等操作。

删除,一般的删除操作后,对应数据就不在了,多次删除也不会有其他影响。

新增/更新,如表单重复提交,重复支付,需要幂等操作,否则会带来严重后果。

如何设计幂等性接口

后端接口

自己总体思路是依靠全局唯一性ID和Mysql的排他锁,自定义乐观锁,主键唯一性等等。

1.依靠业务逻辑的判断

依靠业务逻辑的判断,如支付场景下,支付前取订单号判断是否已经支付,未支付则进行后续支付操作。当A,B两个请求达到系统请求支付接口,若A请求获取到状态已经支付,则成。 若获取到的状态都是未支付,此时一个线程,执行update操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值