1.什么是幂等性
就是接口重复提交产生的问题,保证接口唯一性。
2.什么场景下会产生幂等性问题
1.RPC远程调用的时候产生的网络延迟的情况下、补偿接口的时候。
2.表单重复提交的时候。
3.解决幂等性的方法
使用token可以有效解决这个问题,token(令牌)临时且唯一,有效期 15-120 分钟。
分布式Session 解决方案 使用Redis+token。
在加载页面的时候在后台生成token存放在redis中,然后传到前端页面隐藏域中,当页面提交的时候隐藏域中的token会随着表单一起提交。然后在后台收到token的时候,根据token去redis中查询,如果可以查到则可以进行业务逻辑方法,如果从redis中查询不到token不允许执行业务逻辑方法。当查询到token后,把token删除掉,避免重复提交。如果查询到token但是在执行删除的时候删除失败,原因可能是高并发情况下产生的。因为redis是天然的线程安全,所以会有删除失败的,因为只有一个能够获取资源。