SpringCloud学习笔记----SpringCloud Alibaba Sentinel控制台的使用

113 阅读2分钟

简介:当前Sentinel可以实现 流控 降级熔断 热流key限制 自定义兜底方法 限流等 对服务提供者进行相关控制

流控

流控模式

直接模式

关联模式:当被关联的资源达到阈值时 当前资源会被限制请求【testA关联testB 当testB访问达到阈值,testA的访问会被限制】

流控效果

1:直接--->快速失败【默认的流控处理】直接失败,抛出异常:Blocked by Sentinel (flow limiting)

2:预热:阈值除以coldFactor(默认值为3),经过预热时长后才会达到阈值\
默认coldFactor为3,即请求QPS从threshold/3开始,经预热时长逐渐升至设定的QPS阈值。

3:匀速排队,让请求以均匀的速度通过,阈值类型必须设置成QPS,否则无效::::::设置含义:/testB每秒1次请求,超过的话就排队等待,等待的超时时间为20000毫秒【等待毫秒数 自己设置】

image.png

降级熔断

降级规则

========================================================================
时间窗口默认为1分钟




========================================================================
RT(平均响应时间,秒级)
        平均响应时间 (DEGRADE_GRADE_RT):**超过阈值** **且** **时间窗口内的请求>=5**,两个条件同时满足后触发降级,窗口期过后关闭断路器

RT 最大4900 ms,更大的需要通过启动配置项 

-Dcsp.sentinel.statistic.max.rt=xxx 来配置






========================================================================
异常比例【秒级】
QPS>=5且异常比例(秒级统计)超过阈值时,触发降级;时间窗口结束后,关闭降级





========================================================================
异常数:当资源近1分钟的异常数 超过阈值以后就会进行熔断【统计时间是分钟级别的所以时长窗口不能小于60秒】

image.png

image.png

热流key限制

第一步:配置热点规则

image.png 第二步:编写controller代码 配置某个接口 使用此规则 并配置兜底方法


/**
 *  @SentinelResource注解所对应的 
 *  value 属性的值 必须跟配置的热点规则的资源名一致 
 *  blockHandler 属性配置的是当前的兜底方法
 * @param username
 * @return
 */
@GetMapping("/testE")
@SentinelResource(value = "testE",blockHandler = "dealTestE")
public String testE(String username){
    return "E方法的调用";
}

//兜底方法
public String dealTestE(String username,BlockException blockException){
    return "------------运行兜底方法--------------";
}

第三步:访问测试 只要存在第一个参数 10秒内 超过两次的访问 就会运行兜底方法

image.png

下一篇文章配置主动限流和自定义相关的兜底方法