配置流量控制规则
阈值种类
QPS:每秒钟请求数(request per second) 线程数:每秒钟线程数
流控模式
直接:就是直接触发流控效果 关联:就是关联资源达到了流控阈值,我本身进行流控(订单服务限流,那么我也进行限流) 链路:更加细粒度的(如限制了service中的一个方法,在controller中有两个方法都可以调用它,我们针对于controller其中一个进行限制,而另一个则不限制)【service中方法为abc,controller中方法为f1与f2,我们链路设置f1,那么我们频繁访问f1则触发限流,而无论怎么访问f2都不会触发限流(也就是说当前abc方法是针对于f1调用的限流,限流的是f1调用abc方法的这条链路!)】
流控效果
快速失败:直接给出友好提示 warm up:QPS如果突然间很高,这种方式是根据我们数据的预热时长,先处理1/3,然后在预热时间内,逐步提升QPS可以达到阈值(防止QPS突然间的升高,导致的问题) 排队等待:无论有多少个请求来,就一个个处理,超过超时时间则报超时
程序出现问题,触发降级
RT
平均响应时间(秒级)
平均响应时间超出阈值且在时间窗口内通过的请求>=5,二者同时满足则触发降级,在窗口期后关闭断路器(RT默认最大为4900【一般都足够了】)
异常比例
QPS>=5且异常比例(秒级统计)超过阈值时触发降级,时间窗口结束后,关闭降级
异常数
异常数超过阈值时(分钟统计),触发降级;时间窗口结束后,关闭降级
针对于某个方法,某个参数进行热点key的降级
资源名,写程序中标注@SentinelRescource注解设置的名字
@SentinelResource(value = "testHotKey",blockHandler = "deal_testHotKet") 这里value写什么,在配置里我们就需要配置什么 违背了配置的热点规则,则触发deal_testHotKet方法
参数索引则代表该方法第几个参数(索引从0开始)
高级选项中,选择参数的类型可以设置如果当前参数值为某个值时可以接收更高的QPS
可以完成效果是:
http://codejiejie.com?a=1 每秒钟可以承受3个QPS http://codejiejie.com?a=2 每秒钟可以承受100个QPS http://codejiejie.com?a=3 每秒钟可以承受200个QPS 其余的任何包含参数a的最高接收3个QPS,不包含参数a的不会触发热点规则,即无论如何访问都不会降级
系统的大门,站在整个系统的角度来看的,如果不满足则直接触发降级(该系统下全部降级)
@SentinelResource中
fallback管运行时异常
blockHandler管配置违规
将规则持久化到nacos,需要加配置,并且自己需要在nacos建立配置,自己写入规则(...,这个属实不太友好...)
整个过程就是:服务启动,注册到nacos,从nacos拉去配置,sentinel获取这些配置,作为当前服务的配置规则生效!
分布式服务限流降级熔断解决方案Nacos之Dashboard界面配置含义记录
原文地址:https://www.cnblogs.com/ningxinjie/p/14749095.html