1.上一编我们学习的了fegin 的fallback ,兜底类,可以在服务超时或者不可用时,返回我们的兜底方法,但是如果有大量的持续的请求的时候,请求也不是超时的,能正常返回的,但是系统一下子处理不过来的时候,就会阻塞当前的服务了,这个场景如何测试呢?
2.修改could-user 的tomcat线程处理数量为10,默认为200
server:
port: 8990
tomcat:
max-threads: 10
启动我们的服务
下载压测工具,jmeter,启动jmeter配置一个测试计划


用CMD执行我们的执行计划
jmeter -n -t testplan/cloudtest.jmx -l testplan/result/result.txt -e -o testplan/webreport
以上内容自行百度学习
启动后,我们打开浏览器或者postman 测试我们的其他接口,发现访问
http://localhost:8990/user/getUserInfo我们服务的其他接口时,起码要3S或者5S才返回结果,如果我们的服务不止两个服务呢,N个服务调用时,都这么久才返回就会导致服务雪崩。
这个时候就论到我们的sentinel 上场了,它可以做的事情有很多,我这里只简单介绍一下熔断和限流,其他更高阶的用法大家凭实力学习。
下载sentinel.jar 服务jar包,类似nacos ,有服务端的,下载地址https://github.com/alibaba/Sentinel/releases
启动sentinel.jar,
java -jar sentinel.jar,
在我们的cloud-user的pom.xml引入sentinel
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
在配置文件假如sentinel 配置
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
file-extension: yaml
sentinel:
transport:
dashboard: localhost:8080
port: 8719
application:
name: user
feign:
hystrix:
enabled: true
###设置feign客户端超时时间
###SpringCloud feign 默认开启支持ribbon
ribbon:
###指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。
ReadTimeout: 5000
###指的是建立连接后从服务器读取到可用资源所用的时间。
ConnectTimeout: 5000
###当前实例的重试次数
MaxAutoRetries: 2
###切换实例的最大次数
MaxAutoRetriesNextServer: 1
hystrix:
command:
default:
execution:
timeout:
enable: true
isolation:
strategy: SEMAPHORE
thread:
###断路器的超时时间一定要配置,不然只要sleep 1秒就都超时了,
###而且要比ribbon 的重试次数*时间 大
timeoutInMilliseconds: 20000
启动我们的服务,再打开sentinel 的控制台,配置限流

这个时候我们可以去浏览器快速请求几次看看,能看到会返回
Blocked by Sentinel (flow limiting)
这个就是限流的效果。
再次执行之前的jmeter测试计划,
之前没配sentinel 的时候我们看到我们的请求成功率是百分百的,但是需要很长的时间才执行完,
配置了sentinel 后,我们发现,成功率不高,但是当我们再去访问我们的服务其他的接口时, 发现我们的接口是秒级返回的,所以说,加了熔断器,请求不在阻塞在那里,直接快速失败,不影响其他接口使用,这个应该就是熔断了。

下一编,将讲gateway,网关
本文介绍了在Spring Boot、Spring Cloud和Spring Cloud Alibaba环境下,如何通过Sentinel实现服务熔断和限流。通过调整服务线程池大小并使用JMeter进行压力测试,展示了在未使用Sentinel时服务可能出现的雪崩问题。Sentinel的引入显著提高了服务在高并发情况下的响应速度,实现了快速失败和防止阻塞,保证了其他接口的正常使用。
整合服务熔断sentinel&spm=1001.2101.3001.5002&articleId=119953503&d=1&t=3&u=f84c639a42fc4740a66780664a49f57b)
1109

被折叠的 条评论
为什么被折叠?



