SpringCloud整合Sentinel实现API限流
创作时间:
作者:
@小白创作中心
SpringCloud整合Sentinel实现API限流
引用
CSDN
1.
https://blog.csdn.net/TM007_/article/details/137513538
Sentinel是阿里巴巴开源的流量控制组件,能够为微服务提供实时的流量控制、熔断降级、系统负载保护等功能。本文将详细介绍如何在SpringCloud项目中整合Sentinel,并通过具体的代码示例展示如何实现API限流。
前言
在微服务架构中,流量控制是一个非常重要的环节。本文将介绍如何使用Sentinel实现API限流。Sentinel是一个轻量级的流量控制组件,能够帮助我们实现流量控制、熔断降级、系统负载保护等功能。
一、Sentinel下载
- 直接下载jar包:到文件下载目录层级打开命令页面
- 启动Sentinel:使用
java -jar sentinel-dashboard-1.8.7.jar命令启动sentinel。默认端口是8080,如果需要修改端口,可以使用java -jar sentinel-dashboard-1.8.7.jar --server.port=8333命令。 - 访问管理页面:访问
http://localhost:8333/#/login,默认用户名和密码都是sentinel。
二、SpringCloud整合Sentinel
2.1 引入依赖
在pom.xml文件中添加以下依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
2.2 配置信息
在application.yml文件中添加以下配置:
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8333
port: 8719
management:
endpoints:
web:
exposure:
include: "*"
2.3 启动类开启服务发现
在启动类上添加@EnableDiscoveryClient注解,开启服务发现功能。
2.4 测试接口加注解@SentinelResource
在需要限流的接口上添加@SentinelResource注解:
@SentinelResource
@PostMapping(value = "/login")
public BaseResult login(String username, String password) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
...
return BaseResult.success();
}
三、流控规则
3.1 基本介绍
- 资源名:唯一名称,默认的请求路径
- 针对来源:Sentinel可以针对调用者进行限流,填写微服务名称,默认是default
- 阈值类型/单机阈值:
- QPS:每秒钟的请求数量
- 线程数:当调用该api的线程数达到阈值的时候,进行限流
- 是否集群:不需要集群
- 流控模式:挑默认的看下
- 直接:api达到限流条件时,直接限流
- 流控效果:
- 快速失败:直接失败,抛出异常
3.2 添加一个流控规则
限制单机阈值QPS为1:
3.3 注意事项
在添加流控规则的时候,可能会遇到添加失败的场景,可能是由于客户端使用了低版本的fastjson。建议升级fastjson的版本:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
3.4 测试接口
设置每秒支持一个请求,快速点击请求即可实现限流测试。
章末
后续将补充熔断、负载的使用,以及搭配OpenFeign使用。
后续补充
一、Sentinel的熔断降级
1.1 替换Hystrix实现熔断降级,将Hystrix的配置项改为false,添加Sentinel的配置并开启。
1.2 熔断规则参数配置:
- 熔断策略:
- 慢调用比例:根据一定的时间窗口内请求的响应时间超过设定阈值的比例来触发熔断。
- 异常比例:根据一定的时间窗口内的请求异常比例来触发熔断。
- 异常数:根据一定的时间窗口内的异常次数来触发熔断。
- 最大RT:响应时间阈值。
- 熔断时长:熔断器打开状态的持续时间。
- 最小请求数:在熔断器进入半开状态之前需要满足的请求数量。
- 统计时常:用于计算慢调用比例、异常比例和异常数的时间窗口大小。
二、Sentinel的热点规则
新增热点规则的参数:
- 资源:需要进行限流的具体接口、URL或方法等标识符。
- 参数索引:控制器方法参数的下标。
- QPS阈值:一秒内允许通过的请求次数。
- 热点参数阈值:针对热点参数的具体限流阈值。
- 统计时长:统计数据的时间窗口大小。
三、总结
限流、熔断、热点等机制共同的特点是在触发预先配置的条件时,执行截断操作,以保护系统免受过载影响。这些机制在代码层面表现为请求拦截,执行指定方法,从而实现对系统的保护。
热门推荐
打造童装店的梦幻空间:从入口到试衣间的全方位设计指南
童装店装修设计指南:打造既时尚又童趣的购物空间
从武汉到云南的完美自驾游:路线规划、景点推荐、住宿与美食全攻略
10项自由行注意事项:出发前都确认了吗?做好准备出国无忧
500年非遗英歌舞“出圈”:伦敦表演吸引70万观众
英歌舞:潮汕传统舞蹈登上国际舞台
举报有果:祝欢被处分,马翔宇转战抖音带货
烘焙必备神器:Crisco起酥油的秘密
快速化痰的方法?从痰的颜色看身体!化痰药主要分两种
激光治疗清除率近100%,冷冻治疗更经济,医生建议这样选
新生入学季:第一次离家的心理攻略
中国古代寓言里的现代智慧:从愚公移山到南辕北辙
南航航空安全员培训揭秘:关键要素大公开
Sotyktu成为首个在银屑病关节炎III期研究中获积极结果的TYK2抑制剂
走近中医特色疗法——中国传统五音疗法
从防护到包扎:一文掌握出血急救要领
玉龙雪山最新攻略:交通住宿全解析,四季游览建议
《叛逆者》揭秘:陈默群的真实原型竟是他?
《叛逆者》揭秘:陈默群的真实背景
陈默群的职场生存法则:权力与人性的双重挣扎
中央汇金加仓中国平安,释放积极市场信号
张青松履新中央汇金董事长:金融“老兵”如何引领“国家队”开新局?
熊胆粉真的伤肝?专家揭秘真相
新中式风格的案例 | 设计师必看的绝美设计图
研究证实:坚果消费改善认知功能,核桃效果最显著
“坚果之王”榛子:钙含量超牛奶,抗氧化能力胜红葡萄酒
“坚果之王”榛子:单不饱和脂肪酸、钙、钾含量居坚果首位
不知火舞新联动引爆粉丝热情:从《拳皇》到《王者荣耀》的跨游戏传奇
但丁笔下的撒旦:长角的地狱霸主
借鉴投资大师经验,用科学策略应对股市暴跌