sentinel降级策略:慢调用比例

官网解释:慢调用比例 (SLOW_REQUEST_RATIO):选择以慢调用比例作为阈值,需要设置允许的慢调用 RT(即最大的响应时间),请求的响应时间大于该值则统计为慢调用。当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求响应时间小于设置的慢调用 RT 则结束熔断,若大于设置的慢调用 RT 则会再次被熔断。

一、名词解释

1.调用:一个请求发送到服务器,服务器给与响应,一个响应就是一个调用。
2.RT:响应时间,指系统对请求作出响应的时间。
3.慢调用:当调用的时间(响应的实际时间)>设置的RT的时,这个调用叫做慢调用。
4.慢调用比例:在所以调用中,慢调用占有实际的比例,= 慢调用次数 / 调用次数
5.比例阈值:自己设定的 , 慢调用次数 / 调用次数=比例阈值

统计时长:时间的判断依据
最小请求数:设置的调用最小请求数

二、状态转换

进入熔断状态判断依据:当统计时常内,实际请求数目大于最小请求数目,慢调用比例> 比例阈值 ,进入熔断状态

熔断状态:在接下来的熔断时长内请求会自动被熔断

探测恢复状态:熔断时长结束后进入探测恢复状态

结束熔断:在探测恢复状态,如果接下来的一个请求响应时间小于设置的慢调用 RT,则结束熔断
否则继续熔断。

三、实例测试

1.熔断规则设置
在这里插入图片描述
2.服务器响应时长设置:暂停1秒,所以响应一个请求的时长都大于1秒
在这里插入图片描述
3.熔断推测:
熔断条件:
在1000毫秒,也就是1秒内,如果发送到/testD 的请求数数量大于5,并且在这些请求中,所有请求的响应时长(因为比例与阈值为1,所以是所有的请求响应时长)都大于500毫秒,也就是都大于0.5秒的时候,进入熔断状态。

4.jmeter测试
①设置测试地址
在这里插入图片描述

②设置线程和组
在这里插入图片描述
10个线程,在一秒的时间内发送完。

又因为服务器响应时长设置:暂停1秒,所以响应一个请求的时长都大于1秒

综上符合熔断条件,所以当线程开启1秒后,进入熔断状态

③测试:
Ⅰ.开启十个线程

在这里插入图片描述
Ⅱ.控制台显示
在这里插入图片描述

Ⅲ、浏览器测试熔断
在这里插入图片描述

关闭十个线程,再进行浏览器测试
在这里插入图片描述

正常访问
在这里插入图片描述

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
# Sentinel 控制台 ## 0. 概述 Sentinel 控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置等功能。在 Sentinel 控制台上,我们可以配置规则并实时查看流量控制效果。 ## 1. 编译和启动 ### 1.1 如何编译 使用如下命令将代码打包成一个 fat jar: ```bash mvn clean package ``` ### 1.2 如何启动 使用如下命令启动编译后的控制台: ```bash java -Dserver.port=8080 \ -Dcsp.sentinel.dashboard.server=localhost:8080 \ -Dproject.name=sentinel-dashboard \ -jar target/sentinel-dashboard.jar ``` 上述命令中我们指定几个 JVM 参数,其中 `-Dserver.port=8080` 是 Spring Boot 的参数, 用于指定 Spring Boot 服务端启动端口为 `8080`。其余几个是 Sentinel 客户端的参数。 为便于演示,我们对控制台本身加入了流量控制功能,具体做法是引入 Sentinel 提供的 `CommonFilter` 这个 Servlet Filter。 上述 JVM 参数的含义是: | 参数 | 作用 | | ------------------------------------------------ | ------------------------------------------------------------ | | `-Dcsp.sentinel.dashboard.server=localhost:8080` | 向 Sentinel 接入端指定控制台的地址 | | `-Dproject.name=sentinel-dashboard` | 向 Sentinel 指定应用名称,比如上面对应的应用名称就为 `sentinel-dashboard` | 全部的配置项可以参考 [启动配置项文档](alibaba/Sentinel/wiki/%E5%90%AF%E5%8A%A8%E9%85%8D%E7%BD%AE%E9%A1%B9)。 经过上述配置,控制台启动后会自动向自己发送心跳。程序启动后浏览器访问 `localhost:8080` 即可访问 Sentinel 控制台。 从 Sentinel 1.6.0 开始,Sentinel 控制台支持简单的**登录**功能,默认用户名和密码都是 `sentinel`。用户可以通过如下参数进行配置: - `-Dsentinel.dashboard.auth.username=sentinel` 用于指定控制台的登录用户名为 `sentinel`; - `-Dsentinel.dashboard.auth.password=123456` 用于指定控制台的登录密码为 `123456`;如果省略这两个参数,默认用户和密码均为 `sentinel`; - `-Dserver.servlet.session.timeout=7200` 用于指定 Spring Boot 服务端 session 的过期时间,如 `7200` 表示 7200 秒;`60m` 表示 60 分钟,默认为 30 分钟; ## 2. 客户端接入 选择合适的方式接入 Sentinel,然后在应用启动时加入 JVM 参数 `-Dcsp.sentinel.dashboard.server=consoleIp:port` 指定控制台地址和端口。 确保客户端有访问量,**Sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包**,将客户端纳入到控制台的管辖之下。 客户端接入的详细步骤请参考 [Wiki 文档](alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0#3-%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%8E%A5%E5%85%A5%E6%8E%A7%E5%88%B6%E5%8F%B0)。 ## 3. 验证是否接入成功 客户端正确配置并启动后,会**在初次调用后**主动向控制台发送心跳包,汇报自己的存在
在微服务架构中,Feign是一个声明式的HTTP客户端,它使得编写HTTP请求变得更加简单。它使用了Ribbon来实现负载均衡,并且集成了Hystrix来提供服务降级和容错功能。 而Sentinel是一个开源的流量控制组件,它能够对系统中的API进行实时监控、统计和保护。Sentinel可以通过定义规则来限制对服务的访问,当达到设定的阈值时可以进行流量控制、熔断降级等操作,以保证系统的稳定性和可靠性。 当使用Feign进行服务调用时,我们可以配合使用Sentinel来实现服务的降级。具体步骤如下: 1. 引入Feign和Sentinel的依赖: 在项目的pom.xml文件中添加Feign和Sentinel的依赖,例如: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> ``` 2. 配置Feign和Sentinel: 在项目的配置文件中配置Feign和Sentinel相关的属性,例如: ```yaml spring: cloud: sentinel: transport: dashboard: localhost:8080 port: 8719 feign: sentinel: enabled: true ``` 3. 定义Feign接口: 在接口上使用`@FeignClient`注解,指定要调用的服务名和降级处理的类,例如: ```java @FeignClient(value = "service-provider", fallback = HelloFallback.class) public interface HelloService { @GetMapping("/hello") String hello(); } ``` 4. 实现降级处理类: 创建一个实现了Feign接口的降级处理类,例如: ```java @Component public class HelloFallback implements HelloService { @Override public String hello() { return "Fallback message"; } } ``` 使用Feign和Sentinel进行服务降级后,当服务调用失败或达到设定的流量控制阈值时,将会执行降级处理类中定义的逻辑,返回预设的降级结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值