java接口防重提交如何处理
2023-09-27 14:27:34 时间
1.什么是接口防重?
在一定的时间内多次请求同一接口,同一参数。由于请求是健康请求
,会执行正常的业务逻辑
,从而产生大量的废数据。
2.问题的产生及引发的问题
举一个最简单的例子:日常开发中crud在业务系统中普遍存在,在服务端没有做任何处理,客户端没有做节流、防抖
等限流操作时,同一秒一个用户点了两次新增按钮,导致数据库中存在同样两条数据,其结果可想而知,同理修改、删除同样的道理;查询本身具有幂等性
,但是在同一秒钟同样的操作,查询多次和一次,有区别吗?区别大了去了,不谈用户体验如何,光是网络开销、流量占用、带给服务器的压力
等等,生产中一点小的问题,如何不及时处理,可能会引发灾难性bug。
3.处理方法
-
第一种:前台在请求接口的时候,传递一个唯一值,然后在对应接口判断该唯一值,在一定的时间内是否被消费过
-
第二种:采用
Spring AOP
理念,实现请求的切割,在请求执行到某个方法或某层时候,开始拦截进行,获取该请求的参数,用户信息,请求地址,存入redis中并放置过期时间,进行防重(推荐使用)
4.谈谈以下两种处理方法的利弊
- 第一种:局限性太高,前台必须传递一个唯一值,就算请求到达指定后台服务,写一个拦截器,需要配置太多不需要拦截的方法&#x
相关文章
- Java程序员求职常见问题总结FAQ(持续更新)
- 从源码角度详解Java的Callable接口
- java基础---->java8中的函数式接口
- java中并不是任意多个接口都可以实现多实现
- Java NIO.2 —— 文件或目录移动操作
- Java: 复制文件最快方法
- 深入理解Java的接口和抽象类
- java写webservice接口
- Java 基础【14】@注解
- 2018年如何快速学Java
- Java学习笔记之函数式接口 Stream流
- 转: java学习路线图
- java常见异常集锦
- java的static块执行时机
- Java最全的字符串工具类,例如是否空,去空,截取字符串,下划线转驼峰命名,是否包含字符串
- javac选项以递归方式编译给定目录下的所有Java文件 - IT屋-程序员软件开发技术分享社区
- JNI的又一替代者—使用JNR访问Java外部函数接口(jnr-ffi)
- c语言下的通用数据库接口(之sqlite消化,模拟c#,java的反射)
- Java 泛型例子
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- 大数据必学Java基础(五十三):Colletion接口
- 大数据必学Java基础(四十三):抽象类和抽象方法讲解
- Protobuff java 文件生成命令
- Java 多线程之间如何通知通信
- 【左叶子之和(173-go-java)】