Sentinel 嘚吧嘚
阈值类型/单机阈值:
QPS(每秒的请求数量):当调用该api的QPS达到阈值时,进行限流
线程数:当调用该api的线程数达到阈值的时候,进行限流
是否集群:不需要
流控模式:
-
直接:api达到限流条件时,直接限流
-
关联:当关联的资源达到阈值时,就限流自己
-
链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就进行限流)【别的针对来源】
流控效果:
快速失败:直接失败,抛异常
Warm Up:根据codeFactor(冷加载因子,默认3)的值,从阈值/codeFactor,经过预热时长,才达到设置的QPS阈值
排队等待:匀速排队,让请求以匀速的速度通过,阈值类型必须设置为QPS,否则无效
Sentinel 降级
-
RT(平均响应时间,秒级):平均响应时间 超出阈值 且在时间窗口内通过的请求>=5,两个条件同时满足后触发降级,时间窗口过期后关闭断路器,RT最大4900(更大的需要通过-Dscp.sentinel.statistic.max.rt=XXXX才能生效)
-
异常比例(秒级):QPS >= 5 且异常比例(秒级统计)超过阈值时,触发降级,时间窗口结束后,关闭降级
-
异常数
当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出DegradeException)
另外,相对于Hystrix,Sentinel的断路器是没有半开状态的 —————— 半开的状态系统自动去检测是否请求有异常,没有异常就关闭断路器恢复使用,有异常则继续打开断路器不可用。具体可以参考Hystrix