基于okhttp3拦截器实现短时间内重复请求的拦截

基于okhttp3拦截器实现短时间内重复请求的拦截

API

背景

某次需求代码实现存在缺陷, 导致用户在点击某标签的时候发起了2次请求(即一次重复请求)。由于开发自测阶段没有盯着抓包软件看请求次数, 测试也没有关注接口请求次数问题, 最终将问题带上线。

影响面

  • 导致被调用的接口QPS翻倍, 造成服务端压力。
  • 接口请求处相关埋点上报数翻倍, 造成数据统计混乱。

解决方案

临时止血

热修复 or 发布小版本修复

最终解决方案

客户端增加短时间重复请求拦截器(Interceptor), 仅在开发阶段(测试包)开启。提前保留问题, 将问题扼杀在开发周期早期。

**拦截器代码: **


/*** 用于拦截200ms内重复请求*/
class DuplicateRequestInterceptor : Interceptor {override fun intercept(chain: Interceptor.Chain): Response {val url = chain.request().url.toString() // 请求urlval time = System.currentTimeMillis() // 请求时间try {synchronized(requestMap) {val value = requestMap[url]// 这里拦截逻辑很粗, 只判断了url, 可以考虑更加精细化地判断各个接口参数、header等if (value != null) {val now = System.currentTimeMillis()val delta = now - valuethrottleOccurred(url, delta)chain.call(

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#知识|文件与目录操作:文本读写操作

哈喽,你好啊,我是雷工! 今天学习文件与目录的操作,以下为文本读写操作的学习笔记。 01 文件操作说明 1.1、数据的存取方式 数据库:适合存取大量且关系复杂并有序的数据; 文件:适合存取大量但数据关系简单的数据,像系统的日志文件; 1.2、文件存取的优点 ①:读取操…

ECharts - 坐标轴刻度数值处理

写图表时,Y轴的数值过大,不太可能直接展示,这时候就得简写了,或者百分比展示的也要处理,如下图: yAxis: {type: value,// Y轴轴线axisLine: { show: false }, // 刻度线axisTick: { show: false },// 轴刻度…

收藏!2024年GPU算力最新排名

​GPU(图形处理单元)算力的提升是驱动当代科技革命的核心力量之一,尤其在人工智能、深度学习、科学计算和超级计算机领域展现出了前所未有的影响力。2024年的GPU技术发展,不仅体现在游戏和图形处理的传统优势上,更在跨…

House of Lore

House of Lore 概述: House of Lore 攻击与 Glibc 堆管理中的 Small Bin 的机制紧密相关。House of Lore 可以实现分配任意指定位置的 chunk,从而修改任意地址的内存。House of Lore 利用的前提是需要控制 Small Bin Chunk 的 bk 指针,并且…

Android中如何手动制造logcat各等级日志(VERBOSE、DEBUG、INFO、WARNING、ERROR、FATAL)

文章目录 1、logcat与log工具2、通过log生成logcat日志2.1、logcat日志等级2.2、log指令说明2.3、log生成日志指令 3、制作日志生成shell脚本4、增加日志生成控制5、附录 1、logcat与log工具 logcat:是Android操作系统中用于记录和查看系统日志的工具。它是Android…

如何在 VPS 上安装和使用 VirtualMin

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 关于 Virtualmin Virtualmin 是 Webmin 的一个模块,允许对(多个)虚拟专用服务器进行广泛的管理。您…

【华为OD机考】2024D卷最全真题【完全原创题解 | 详细考点分类 | 不断更新题目】

可上 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 od1441了解算法冲刺训练(备注【CSDN】否则不通过) 文章目录 相关推荐阅读栈常规栈单调栈 队列(题目极少,几乎不考)哈希哈希集合哈希表 前缀和双指针同向双指针 贪…

七、SpringBoot日志

1. 得到日志对象 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; //打印日志…

C++程序使用开源zlib库对二进制字节流数据进行压缩和解压(附源码)

目录 1、概述 2、zlib开源库与开源zip.cpp和unzip.cpp的区别 3、发送端先调用compress压缩,再将数据发出去 4、接收端接收到数据,调用uncompress解压,解压后再使用 5、最后 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.c…

c++-封装案例-设计学生类

类中的属性和行为统称为成员,属性:成员属性、成员变量;行为:成员函数,成员方法。

黛米·摩尔和她的孙女卢埃塔在这张飘逸的快照很亲密

卢埃塔和她的祖母黛米摩尔显然是最好的朋友,这张飘逸的快照证明了这一点。准备好“哇!” 7 月 26 日,摩尔分享了一张非常迷人的照片,照片上有她、她的两个女儿和她的孙女在她昂贵的后院。她在照片中配文说:“夏日&…

vue3-环境变量-JavaScript-axio-基础使用-lzstring-字符串压缩-python

文章目录 1.Vue3环境变量1.1.简介1.2.全局变量的引用1.3.package.json文件 2.axio2.1.promise2.2.安装2.3.配置2.3.1.全局 axios 默认值2.3.2.响应信息格式 2.4.Axios的拦截器2.4.1.请求拦截器2.4.2.响应拦截器2.4.3.移除拦截器2.4.4.自定义实例添加拦截器 3.lz-string3.1.java…

回溯

组合问题 LeetCode77 组合 class Solution { public:vector<vector<int>>res;vector<int>list;void dfs(int begin,int n,int k){if(list.size()k){res.push_back(list);return;}for(int ibegin;i<n;i){list.push_back(i);dfs(i1,n,k);list.pop_back();}…

(源码分析)springsecurity认证授权

了解 1. 结构总览 SpringSecurity所解决的问题就是安全访问控制&#xff0c;而安全访问控制功能其实就是对所有进入系统的请求进行拦截&#xff0c;校验每个请求是否能够访问它所期望的资源。 根据前边知识的学习&#xff0c;可以通过Filter或AoP等技术来实现&#xff0c;Spr…

天津仁爱学院2024级专升本新同学开学报到提示

亲爱的2024级新同学: 亲爱的仁爱新人&#xff0c;你准备好了吗&#xff1f;祝福之余&#xff0c;关于入学报到还有以下几点提示&#xff1a; 01报到时间 报到时间:2024年9月1日。报到时请携带录取通知书和准考证。因参军保留入学资格或因病及其他原因不能按时报到的同学&#x…

主图趋势交易九稳量化系统 期货指标公式大全 最准的期货指标源码 看期货涨跌最简单的方法文华财经指标公式源码

交易的动机必须来自于内心&#xff0c;一种解决问题的执着。在整个交易生涯的漫长岁月里&#xff0c;无法始终保持这种热忱。除非亲身体验&#xff0c;否则很难理解这种疯狂的热忱。这是一种高度的专注&#xff0c;其他一切好像都不存在&#xff0c;视野之内没有其他的东西。这…

利用Python进行高效数据分析实践

引言 在当今的数据驱动世界中&#xff0c;能够有效地处理和分析数据已成为许多行业的核心竞争力。Python作为一种强大的编程语言&#xff0c;因其简洁易读的语法以及丰富的第三方库支持&#xff0c;在数据科学领域受到了广泛的欢迎。本文将介绍如何使用Python进行高效的数据分…

探索 Milvus 存储系统:如何评估和优化 Milvus 存储性能

欢迎来到探索 Milvus 系列。Milvus 是一款支持水平扩展和具备出色性能的开源向量数据库。Milvus 的核心是其强大的存储系统&#xff0c;是数据持久化和存储的关键基础。该系统包括几个关键组成部分&#xff1a;元数据存储&#xff08;meta storage&#xff09;、消息存储&#…

苹果电脑怎么使用Windows软件 苹果笔记本怎么安装Windows mac怎么安装windows

最早的苹果电脑的概念是在1976年的时候由乔布斯提出来的&#xff0c;在1977年的时候发行的第一款个人电脑&#xff0c;也就是苹果笔记本电脑。苹果笔记本的操作系统是MAC OSmac OS是基于unix内核的系统&#xff0c;这个系统是专门为苹果电脑开发的。macOS比windows的视觉冲击大…