ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Alibaba Sentinel降级规则(1.8.0 及以上版本)

2022-04-16 22:02:34  阅读:176  来源: 互联网

标签:调用 请求 1.8 Alibaba 熔断 比例 getBody6 Sentinel 异常


3.降级策略:异常数(ERROR_COUNT)
服务降级
Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(比如:调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败返回,避免影响到其他资源而导致级联错误。

当资源被降级后,在接下来的时间窗口之内,对资源的调用都自动熔断。

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

1.编写controller类

@GetMapping("/getBody6_1")
public String getBody6_1(){
try {
TimeUnit.SECONDS.sleep(1);//睡眠1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
return "getBody6_1";
}

2.新增熔断规则:

说明:在1000毫秒内,当请求数大于5,接口响应时间大于800ms,慢调用比例达到100%时,接下来的20秒内自动开启熔断。

补充:整合nacos后,下发配置对应的内容如下:

[
{
"resource": "/getBody6_1",//资源名
"grade": 0,//熔断策略,0-慢调用比例
"count": 800,//最大RT
"slowRatioThreshold": 1,//比例阈值
"timeWindow": 20,//熔断时长
"minRequestAmount": 5,//最小请求数
"statIntervalMs": 1000//统计时长
}
]

3.使用JMeter压测工具,让1秒内请求接口(http://localhost:9001/getBody6_1)10次,这时Sentinel就开启了熔断。

4.使用浏览器请求:http://localhost:9001/getBody6_1


2.降级策略:异常比例(ERROR_RATIO)
异常比例:当单位统计时长(statIntervalMs)内请求数大于设置的最小请求数,并且异常比例大于设置的比例阈值,则接下来的熔断时长内请求自动会被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功(无异常)则结束熔断,否则会再次被熔断。

1.编写controller类

@GetMapping("/getBody6_2")
public String getBody6_2(Integer id){
if(id != null && id < 0){
throw new RuntimeException("运行异常");
}
return "getBody6_2";
}

2.新增熔断规则:

 

 

说明:在1000毫秒内,当请求数大于5且异常比例达到阈值50%时,接下来的20秒内自动开启熔断。

补充:整合nacos后,下发配置对应的内容如下:

[
{
"resource": "/getBody6_2",//资源名
"grade": 1,//熔断策略:1-异常比例
"count": 0.5,//比例阈值
"timeWindow": 20,//熔断时长
"minRequestAmount": 5,//最小请求数
"statIntervalMs": 1000//统计时长
}
]

3.使用浏览器请求:http://localhost:9001/getBody6_2?id=-1

 

 


3.降级策略:异常数(ERROR_COUNT)
当单位统计时长(statIntervalMs)内请求数大于设置的最小请求数,并且异常数大于设置的异常数,则接下来的熔断时长内请求自动会被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功(无异常)则结束熔断,否则会再次被熔断。

1.仍然使用上面的controller类

2.新增熔断规则:

 

 

说明:在1000毫秒内,当请求数大于5且异常数达到5时,接下来的20秒内自动开启熔断。

补充:整合nacos后,下发配置对应的内容如下:

[
{
"resource": "/getBody6_2",//资源名
"grade": 2,//熔断策略:2-异常数
"count": 5,//异常数
"timeWindow": 20,//熔断时长
"minRequestAmount": 5,//最小请求数
"statIntervalMs": 1000//统计时长
}
]

3.使用浏览器请求:http://localhost:9001/getBody6_2?id=-4,快速刷新页面,就会出现熔断。

 

 

4.当20秒后,如果使用浏览器请求:http://localhost:9001/getBody6_2?id=0,接口访问正常,说明熔断结束。如果使用浏览器请求:http://localhost:9001/getBody6_2?id=-4,接口访问异常,再次访问熔断自动开始。

标签:调用,请求,1.8,Alibaba,熔断,比例,getBody6,Sentinel,异常
来源: https://www.cnblogs.com/pindao111/p/16154375.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有