本节内容总结:
1.Sentinel的使用
你可以看到本节课的所有案例中Sentinel都是被用在被调用方的
1》针对被调用方的/testA
做的流控
如下:
①快速失败:设置/testA的单机阈值为1,阈值类型为QPS或线程数,流控效果为快速失败(例如QPS=5表示对/testA的每秒请求数不能大于5,线程数为5表示对/testA的请求线程数不能大于5)
②关联:设置/testA流控效果为关联,关联/testB,单机阈值为1,阈值类型为QPS(当/testB的QPS大于1时会对/testA做流控,相当于支付模块达到阈值,那么与支付模块相关联的下订单的模块被限流了)
③WarmUp:设置/testB的单机阈值为10,阈值类型为QPS,流控效果为WarmUp,预热时长为5分钟(冷加载因子默认为3,单机阈值是10预热时长为5就表示5秒钟以后阈值要由3(十除以三得来的)过渡到10)
④排队等待:设置/testA的单机阈值为1,阈值类型为QPS,流控效果为排队等待,超时时间为20000(它表示/testA每秒1次请求,超过的话就排队等待,等待的超时时间为20000毫秒。)
2》针对被调用方的/testA
做的服务降级
如下:
RT:平均响应时间超出阈值 且 QPS>=5,两个条件都满足后会打开断路器
异常比例:异常比例超过阈值 且 QPS>=5,两个条件都满足后会打开断路器
异常数:异常数超过阈值会打开断路器
①RT:设置/testA的降级策略为RT,数值为200ms,时间为1s(它表示访问/testA时如果200ms内没有响应完成 且 QPS>=5,就对/testA进行降级,在未来1s内就会打开断路器)
②异常比例:设置/testA的降级策略为异常比例,数值为0.2,时间为1s(它表示访问/testA时如果异常比例超过20% 且 QPS>=5,在未来1s内就对/testA进行降级,就会打开断路器)
③异常数:设置/testA的降级策略为异常数,数值为5,时间为60s(它表示访问/testA时如果60s内异常数大于5,就对/testA进行降级,就会打开断路器)
3》针对被调用方的/testA
做的热点限流
如下:
①方式一:
http://localhost:8401/payment/qry?p1带有p1参数的进行限流,而那些http://localhost:8401/payment/qry?p2带有p2的、http://localhost:8401/payment/qry?p3带有p3的我们就不限
②方式二:
http://localhost:8401/payment/qry?p1我们可以设置p1等于5时,它的阈值为200,否则就不对它进行限流
4》针对被调用方
的系统规则
如下:
以前是对被调用方的/testA这种一个rest地址进行的控制,现在是对全局的控制,不论是访问被调用方的哪个接口,统一做一些阈值限制
2.@SentinelResource注解的用法
1.对资源名做流控
2.对url做流控
3.做全局统一处理
④做流控处理+异常处理