简介
-
接口的幂等性是指:
用户对同一个操作发起多次请求,系统的设计需要保证其多次请求后结果是一致的。常见的如支付场景,连续快速点击两次支付 10 元,不应该扣费 20,第一次应该扣费成功,第二次则应该失败 -
什么场景要考虑幂等性设计
- 在现在公司里头,都在做分布式划分,一个大型系统会拆成比较多的模块,不同的模块用集群来部署,上游服务调用下游服务的形式,比如 rpc 调用,但是由于网络抖动等原因,可能会造成服务迟迟没有响应,用户端可能多次点击
- 再一个就是支付场景也必须得考虑一下幂等性的问题
- select 是天然幂等的操作,需要注意的是编辑相关的操作
幂等性如何实现
前端应当处理
前端一般对比如支付按钮需要加上频控,避免过快的连续点击
后端基于 token + redis 处理
想法:
两次针对同一订单的付款请求,如果每次这样的请求有一个唯一凭证,每次这个凭证访问到后端,看看 redis 有没有,有的话请求执行