首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SpringBoot 对接外部接口,一步一步性能调实战篇

本平台对接某某平台的接口,保证接口的稳定性和安全性

实战:

首先我们初始化一个Demo,SpringBoot初始化教程略,初始化后的效果如下:

1.引入依赖

这里我们使用 commons-httpclient 3

2.编写工具类(HttpClientUtils):

根据需求,这里我们需要两个参数,一个是token,一个是url参数 + url地址,权限验证采用的是Bearer Token

Post请求:

根据需求,这里我们需要三个参数,一个是token,一个是url参数 + url地址,还有一个是请求体,权限验证采用的是Bearer Token

Main方法测试:

获得的请求结果:

我们请求得到JSON字符串后,使用GSON来解析JSON,提取有用的信息,如token

获取得到token后我们开始使用,模拟一次Get请求:

完整工具类,方便大家拿来直接使用:

HttpClientUtils.java

为前端提供接口并测试:

首先我们统一返回风格:

Result.java

新建ApiController:

首先我们将公共变量做一个提取:

模拟Get请求:

模拟Post请求:

整体代码:

优化:

模拟场景:在尽可能的不破坏源代码的情况下,不喜勿喷

优化一:属性通过配置文件读取

新建application.yml文件

新建配置文件读取类:

ApiConfig.java

ApiController进行微调:

由于Token会存在过期时间,所以我们这里引用Redis

引入依赖:

在application.yml添加redis配置:

注入RedisTemplate,并优化

进一步优化

场景:如果有大量请求同时访问一个正好过期的缓存数据,可能会出现缓存击穿,所以我们的解决方案是添加分布式锁

加入依赖:

创建RedissionConfig.java 配置RedissionClient

注入并编写读锁、写锁:

再次优化:

互联网系统经常会遇到高并发大流量的请求,在突发情况下(如秒杀、抢购),瞬间大流量会直接把系统打垮,为了防止出现这种情况最常见的解决方案之一就是限流,当请求达到一定的并发数或速率,就进行等待、排队、降级、拒绝服务等。

基于Guava工具类【令牌桶算法】,借助自定义注解+AOP实现接口限流

令牌桶算法的原理也比较简单:系统会维护一个令牌(token)桶,以一个恒定的速度往桶里放入令牌(token),这时如果有请求进来想要被处理,则需要先从桶里获取一个令牌(token),当桶里没有令牌(token)可取时,则该请求将被拒绝服务。令牌桶算法通过控制桶的容量、发放令牌的速率,来达到对请求的限制。

单机模式模拟:

添加依赖:

自定义限流注解:

Limit.java

使用AOP切面拦截限流注解

给需要限流的接口加上注解

多次请求时:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230501A02IHF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券