启动后 使用用户密码sentinel登录即可

sentinel是懒加载的 需要有请求才能够显示对应的服务

sentinel流控规则_正常运行

流控演示

流控模式:

直接:接口达到限流条件时,直接限流

关联:当关联的资源达到阈值时,就限流自己


直接快速失败

sentinel流控规则_spring_02

这里要区分一下QPS和线程数

QPS可以理解为 每秒请求的次数 当每秒单机阈值超过1 则失败

线程数多次刷新是没有失败效果的 但如果加了延时 再打开不同的页面 再次刷新 则失败

关联快速失败

sentinel流控规则_spring_03

要测试最好加上延时和postman等模拟工具 这里就不演示了

postman发多个请求

但还是提一下怎样开多个请求

sentinel流控规则_链路_04

sentinel流控规则_限流_05

sentinel流控规则_链路_06

sentinel流控规则_正常运行_07

链路快速失败

这是重点讲的内容 毕竟在这里踩过坑

这里说一下 我用的版本是springCloud-alibab 是2.2.0.RELEASE sentinel1.7.0 所以会造成流控链路失效

给出解决办法

这里举个例子

新增service接口

@Service
public class SentinelService {

/**
* @SentinelResource: 可以理解就是一个资源名
*/
@SentinelResource("myresource")
public String sentinelChain() {
return "调用该资源成功!!!!!";
}

}

controller

@RestController
public class FlowLimitController {

@Autowired
private SentinelService sentinelService;

@GetMapping("/testC")
public String testC() {
return "testC"+sentinelService.sentinelChain();
}

@GetMapping("/testD")
public String testD() {
return "testD"+sentinelService.sentinelChain();
}
}

如果单单是这样的配置 是不起效果的 还需要新增配置

1.7.0 版本开始(对应Spring Cloud Alibaba的2.1.1.RELEASE) 需要新增依赖

<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-web-servlet</artifactId>
</dependency>

配置​​spring.cloud.sentinel.web-context-unify=false​

配置类

@Configuration
public class FilterContextConfig {
@Bean
public FilterRegistrationBean sentinelFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new CommonFilter());
registration.addUrlPatterns("/*");
// 入口资源关闭聚合
registration.addInitParameter(CommonFilter.WEB_CONTEXT_UNIFY, "false");
registration.setName("sentinelFilter");
registration.setOrder(1);
return registration;
}
}

接下来就起效果了

sentinel流控规则_链路_08

Warm Up 预热

当流量突然增大的时候,我们常常会希望系统从空闲状态到繁忙状态的切换的时间长一些。即如果系统在此之前长期处于空闲的状态,我们希望处理请求的数量是缓步的增多,经过预期的时间以后,到达系统处理请求个数的最大值。Warm Up(冷启动,预热)模式就是为了实现这个目的的。

默认 coldFactor 为 3,即请求 QPS 从 threshold / 3 开始,经预热时长逐渐升至设定的 QPS 阈值。

看图

sentinel流控规则_懒加载_09

上面的是官方说法 说人话就是 10/3=3

你一开始请求超过​​每秒3次​​​ 则报错 等​​预热5秒钟​​​ 除非超过​​每秒10次​​ 否则系统正常运行

好比你要跑100米 得先热热身 让身体适应一下 不然抽筋猝死就完蛋了

排队等待

sentinel流控规则_正常运行_10

这里等待时间为1秒钟 如超过 一秒 则报错

sentinel流控规则_懒加载_11