接口防重复提交的技术解决方案

Posted buguge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口防重复提交的技术解决方案相关的知识,希望对你有一定的参考价值。

【本文完善中...】

 

无论是http接口,还是rpc接口,防重复提交(接口防重)都是绕不过的话题。

重复提交与幂等,既有区别,又有联系。幂等的意思是,对资源的一次请求与多次请求,作用是相同的。HTTP的POST方法是非幂等的。如果程序处理不好,重复提交会导致非幂等,引起系统数据故障。防重复提交,要通过技术手段来实现。保证幂等性既要通过技术手段来实现,又要有对业务数据的验证。

 

常见的B/S场景的重复提交,用户手抖或因为网络问题,服务端在极短时间内收到同样的http请求。

rpc接口的重复提交,一种是不恰当的程序调用,即程序漏洞导致重复提交。在一种,比如拿dubbo来说,因为网络传输问题,会导致重试调用。

 

防重提交的方案,常见的是加锁。java单体应用可以用语言本身的synchronized锁机制。分布式系统,一般是借助redis或zk等分布式锁。

技术图片

 

以上是关于接口防重复提交的技术解决方案的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot自定义注解+AOP+redis实现防接口幂等性重复提交,从概念到实战

按钮重复点击解决方案

Spring Cloud项目如何防止重复提交,防重复提交幂等校验,Redis+aop+自定义Annotation实现接口

防重复提交的方式汇总

使用Redis实现接口防重复提交

使用Redis实现接口防重复提交