原文网址:Java后端接口幂等的方案_IT利刃出鞘的博客-CSDN博客
本文介绍Java后端接口幂等的方案。
接口幂等也是Java后端面试中常见的问题。
对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。
对于查询操作,它自然是幂等的,不会对系统资源造成影响。
对于添加和修改操作,就要控制幂等性。
以创建订单为例进行说明:
一个订单创建接口,第一次调用超时了,然后调用方重试了一次。虽然第一次超时了,但是实际可能创建成功了,再次调用接口重试,这时就会调用2次创建接口,会创建2个订单。
我们重试是想有一次成功的请求,如果真的减去2次库存,那就不满足需求。
实际上,这种重试一般发生在框架中,比如:RPC框架、MQ。
如下方案可以多个一起使用。
概述
对这个请求的某个唯一值进行锁定。
详述
对于保存接口,很难判断这两次请求是由于重试导致的,不好对业务加锁。解决方案有:
例1:注册用户
将用户名的数据库字段设置唯一索引。
例2:创建订单
将用户名+商品id+付款状态设置唯一索引。即:用户的未付款的某种商品只能有一个。