二.Sentinel 流控规则的配置及说明
2021-03-22 本文已影响0人
G__yuan
1.业务服务与sentinel整合完毕之后,启动sentinel和业务服务,然后请求业务的服务的api接口,将会在sentinel dashboard上看到如下图的请求路径
image.png2.流控规则的配置以及说明
image.png针对来源:
此处的填写的名称,需要在代码中指定;指定的方式为:在某一段方法内填写ContextUtil.enter(resourceName,"填写来源名称")即可;
@RestController
@RequestMapping("test")
public class TestController {
@Autowired
private TestFeignClient testFeignClient;
@GetMapping("get")
public String test(){
String resourceName = "test/get"; //一般即为请求路径
ContextUtil.enter(resourceName,"填写来源名称");
return testFeignClient.getTestInfo();
}
}
流控模式:
直接:代表请求请求到该接口如果达到设置到阈值将直接进行流控,直接抛出异常
关联:代表请求到该接口,关联的资源达到设置的阈值,然后才触发流控,比如在同一个服务中会有两个接口,一个读资源操作的接口,一个是写资源操作的接口,如果读资源操作的接口QPS太大时,会影响写操作业务完整性,即可以在设定资源名为写操作的流控规则时流控模式设定为关联模式,关联的资源为读操作的接口,就是当读操作的QPS达到阈值时,将写操作进行流控。(当关联当资源达到阈值时,就限流自己)
image.png
链路
比如一个微服务中的两个接口都调用了该微服务中的同一个service方法,并且该方法用SentinelResource注解给标注了,然后对该注解标注的资源进行规则配置,则可以选择链路模式,规则中资源名,就是注解标注的名称,入口资源就是指定,对那个接口调用该service的方法进行流控。
service方法编写方式
image.png
流控效果
快速失败:顾名思义,就是直接抛出异常
Warm Up :可以设置预热的时长,即预热/冷启动方式。当系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。
排队等待:顾名思义,就是请求一个一个排队等待,设定一个请求等待的超时时间,等待时间超过设定的值,然后抛出异常。
以上为个人理解记录,官方阐述地址为:https://github.com/alibaba/Sentinel/wiki/%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6