当前位置: 首页>后端>正文

sentinel集成和单机测试

一、环境信息

1.1 测试环境

? ? ?本地IDE直接启动的控制台和客户端

1.2 版本信息

jdk: 11

spring-boot:?2.6.13

spring-cloud:?2021.0.5

spring-cloud-alibaba:?2021.0.4.0

sentinel: 1.8.5

sentinel官网

1.3 术语解释

QPS(Queries-per-second)即每秒查询率,QPS(TPS)= 并发数/平均响应时间,可以简单理解为每秒的请求数。

流控(流量控制):就是控制请求的流量,在超过设置的阈值后,请求就直接拒绝。

熔断(熔断降级):当调用链路中某个资源出现不稳定,例如表现为 timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果。

二、sentinel控制台安装

官网下载jar包或者下载源码打包,和传统的springboot项目一样启动即可。

非必须,只是用来测试和看数据,默认用户密码sentinel,可在项目application.properties配置文件中修改

sentinel集成和单机测试,第1张
sentinel登录
sentinel集成和单机测试,第2张
sentinel登录后

三、sentinel集成

3.1 spring-boot集成

只需要额外添加一个依赖

<dependency>

????<groupId>com.alibaba.cloud</groupId>

????<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>

</dependency>

然后配置sentinel控制台地址即可

spring:

? application:

? ? name: spring-boot-demo

? cloud:

? ? sentinel:

? ? ? transport:

? ? ? ? dashboard: localhost:8080

? ? ? ? heartbeat-interval-ms: 500

? ? ? ? eager: true

注意:控制台和springboot都启动后,控制台界面上是看不到项目的,只有在springboot有接口请求后才会有项目信息。

3.2 spring-cloud集成

待测试补充

四、sentinel测试

请求模拟:5个进程,每个进程每秒请求一次接口

如果被限流,请求方会获取到429错误:Blocked by Sentinel (flow limiting)

sentinel集成和单机测试,第3张

4.1 流控规则

4.1.1 设置QPS

sentinel集成和单机测试,第4张
流控规则-QPS
sentinel集成和单机测试,第5张
实时监控-QPS

如图所示,设置的QPS是1,模拟的请求是接近5,但是实际通过的QPS是2,是因为Sentinel的流控规则是基于滑动窗口来计算的,也就是说,Sentinel 会在固定时间内统计请求的数量,然后根据这个统计结果来判断是否进行流控。由于统计数据存在误差,因此 Sentinel 实际的 QPS 可能会略微超过流控规则设置的 QPS,这属于正常现象。

4.1.2 设置并发线程数

sentinel集成和单机测试,第6张
流控规则-并发线程数
sentinel集成和单机测试,第7张
实时监控-并发线程数1

如图所示,审核制的并发线程数是1,模拟的请求QPS接近5,由于每个接口响应非常快,所以在模拟请求QPS接近5的时候实际的服务端线程也很小。

那猜测下,如果接口响应比较长,服务端的线程数就应该上涨,通过的QPS就应该降低。按照这个猜想,模拟的接口睡眠800ms,之后的实时监控如下,猜想成立。

sentinel集成和单机测试,第8张
实时监控-并发线程数2

4.2 熔断规则

4.2.1 设置慢调用比例

sentinel集成和单机测试,第9张
熔断规则-慢调用比例
sentinel集成和单机测试,第10张
实时监控-慢调用比例

如图所示,设置的最大RT是500ms,模拟的请求响应时间是800ms,每个请求都会超时,但是设置了最小请求数,所以依然会有一个通过的QPS

4.2.2 设置异常比例

sentinel集成和单机测试,第11张
熔断规则-异常比例
sentinel集成和单机测试,第12张
实时监控-异常比例

如图所示,设置的异常比例未0.5,模拟的请求全部抛出异常,每个请求都是失败,但是设置了一个最小请求数1,所以依然会有1个请求到达服务,其他请求就都被拒绝,防止服务器负载过高或者宕机。

4.2.3 设置异常数

sentinel集成和单机测试,第13张
熔断规则-异常数
sentinel集成和单机测试,第14张
实时监控-异常数

如图所示,设置了异常数3,最小请求数1,在模拟的QPS分别为5,10和3的时候,都是保留了一个通过的QPS,拒绝了其他的。

保持QPS=3的模拟请求,把异常数改为4以后如下

sentinel集成和单机测试,第15张
实时监控-异常数2

4.3 热点规则

热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。

并且需要硬编码,添加@SentinelResource注解才可以使用。

4.4 系统规则

4.4.1 设置cpu使用率

sentinel集成和单机测试,第16张
系统规则-CPU使用率
sentinel集成和单机测试,第17张
实时监控

如图所示,CPU使用率先设置的3,请求全部拒绝,此时查看电脑cpu使用率大概在5%,所以改为5,则出现部分拒绝部分放行。


https://www.xamrdz.com/backend/3rm1921625.html

相关文章: