1.流控规则: 流量控制(flow control)
定义:其原理是监控应用流量的QPS或并发线程数等指标,当达到指定的阈值时对流量进行控制,已避免被瞬时的流量高峰冲垮,
从而保障应用的高可用性。
QPS:每秒的请求数 当每秒请求数超过指定阈值之后对当前请求进行限流
并发线程数: 当服务器中创建线程数超过指定阈值之后对当前请求进行限流
a.高级选项 --->流控模式
1.直接: 当配置资源在运行过程超过当前规则配置的阈值之后对该资源请求做的处理是什么
2.关联: 当配置资源在运行过程中超过当前规则配置的阈值之后对他所关联资源进行做什么样的处理
3.链路: 当配置资源在运行过程超过当前规则配置的阈值之后对他链路中资源请求做什么的处理
b.流控效果 ---> 只适用于QPS限流
1.快速失败:直接拒绝请求,并爆出相应异常
2.Warm Up:(冷启动 预热)
3.排队等待:(始终匀速通过)
2.降级规则:熔断降级(Degrade Service)
定义:其原理是监控应用中资源调用请求达到指定阈值时自动触发熔断降级
a.熔断降级
熔断:用来避免微服务架构中雪崩现象,达到某个阈值条件之后自动触发熔断
原理:当监控到调用链路中某一个服务,出现异常(20个已上)自动触发熔断,在触发之后对于该服务调用不可用
b.Sentinel 提供熔断策略
RT 根据请求响应时间熔断
异常比例 根据请求调用过程中出现异常的百分比进行熔断
异常数 根据请求调用过程中异常数进行熔断
c.降级策略
RT: 平均响应时间:当1S内持续进入N个请求,对应时刻的平均响应时间(秒级)均超过阈值(count,以ms为单位),
那么在接下的时间窗口(以S为单位)之内,对这个方法的调用都会自动的熔断(抛出 DegradeException)。
注意: Sentinel默认统计的Rt上限是4900ms,超出此阈值的都会算作4900ms,若需要变更此上限可以通过启动配置项
-Dcsp.sentinel.statistic.max.rt=XXX 来配置
异常比例:当资源的每秒请求量>=N(可配置), 并且每秒异常总数占通过量的比值超过阈值之后,资源进入降级。即在接下的
时间窗口(以S为单位)之内,对这个方法的调用都会自动地返回。异常比率的阈值范围是[0.0 ~1.01],代表0%~100%
异常数:当资源近1分钟的异常数目超过阈值之后会进行熔断。注意由于统计时间窗口是分钟级别的。
若timeWindow小于60S,则结算熔断状态后仍可能再进入熔断状态。
3.热点规则:热点参数限流(ParamFlow)
热点:何为热点:热点即为经常访问的数据。
定义:其原理很多时候我们希望统计某个热点数据中访问频次最高的Top K数据,并对其访问进行控制 (top K 访问频次最高的前几数据)
热点限流:也称之为热点参数限流,日后访问资源中携带了指定参数进行限流
a.如何使用
注意:使用热点参数限流时,不能使用资源路径,必须使用资源别名
1.sentinel 提供资源别名注解 @SentinelBesource(value="别名") // 作用代码这是一个sentienl资源
value=“”: 别名
blockHandler=“方法名”: 使用sentinel进行不同规则控制时的默认处理方案 (只负责sentinel控制台配置违规)
fallback="方法名":自定义业务出错时默认处理方案
defaultFallback="方法名":指定一个业务错误时默认方案
4.系统规则:系统规则(System)
定义:其原理 Sentinel系统自适应限流从整体维度对应用入口流量进行控制
5.授权规则:黑白名单控制规则
定义:很多时候,我们需要根据调用来源判断该次请求是否允许放行,这时候可以使用Sentinel的来源访问控制(黑白名单控制)的功能。
来源访问控制根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;
若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。