小编给大家分享一下Sentinel服务治理知识点有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
把随机来的流量进行整形,将流量控制在系统的能力范围内,增强应用可用性。
通过运行指标控制
1.基于QPS。备注:使用RuleConstant.FLOW_GRADE_QPS策略
2.线程数。备注:使用RuleConstant.FLOW_GRADE_THREAD策略
通过资源的调用关系控制
1.根据调用来源限流
分为不区分调用来源、针对特定的调用者、针对除特定应用以外的调用者三种类型
备注:通过AbstractRule.setLimitApp来实现
2.关联限流
通过控制当前资源关联流量实现。
备注:使用RuleConstant.STRATEGY_RELATE和FlowRule.ref_identity策略
3.链路限流
在调用链路中,通过只根据某个入口的统计信息对资源限流量。
备注:使用RuleConstant.CHAIN和FlowRule.ref_identity策略
流量控制结果
快速失败:流量超过阀值则快速失败FlowException或者返回mock数据。
预热模式:通过的流量缓慢增加,经过设置的预热时间以后,到达系统处理请求速率的设定值。默认会从设置的QPS阈值的1/3开始慢慢往上增加至QPS设置值。
备注:使用RuleConstant.CONTROL_BEHAVIOR_WARM_UP_RATE_LIMITER策略。
排队等待:严格控制请求通过的间隔时间,请求匀速通过。需设置具体的超时时间,当计算的等待时间超过超时时间时请求就会被拒绝。
备注:通过CONTROL_BEHAVIOR_RATE_LIMITER来实现
熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出 DegradeException)。
熔断降级支持的策略:
RT模式:资源的平均响应时间都超过阈值(秒级平均RT,以ms为单位),资源调用会被熔断。在接下的降级时间窗口(在降级规则中配置,以s为单位)之内,对这个方法的调用都会自动返回(抛出 DegradeException)。
备注:使用RuleConstant.DEGRADE_GRADE_RT策略
异常比例模式:当资源的每秒异常数占通过量的比值超过阈值之后,资源进入降级状态,即在接下的降级时间窗口(在降级规则中配置,以s为单位)之内,对这个方法的调用都会自动地返回。异常比率的阈值范围是[0.0, 1.0],代表0%-100%。
备注:使用RuleConstant.DEGRADE_GRADE_EXCEPTION_RATIO策略
分钟级异常数模式:当资源最近1分钟的异常数目超过阈值之后会进行熔断。
备注:使用RuleConstant.DEGRADE_GRADE_EXCEPTION_COUNT策略
通常对弱依赖进行熔断,对强依赖进行隔离降级。
弱依赖:若依赖的第三方应用出错不会影响而整体流程,则称之为弱依赖。
强依赖:若依赖的第三方应用或组件,或者应用自身的内部方法出错会影响而整体流程,则称之为强依赖。
热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的Top K数据,并对其访问进行限制。比如:
商品ID为参数,统计一段时间内最常购买的商品ID并进行限制
用户ID为参数,针对一段时间内频繁访问的用户ID进行限制
备注:使用ParamFlowRule.setParamFlowItemList和ParamFlowRuleManager.loadRules
实际情况下流量到每台机器可能会不均匀,仅靠单机维度去限制的话会无法精确地限制总体流量。通过精确地控制整个集群的调用总量,结合单机限流,实现集群整体防护。
集群流控中共有两种身份:
Token Client:集群流控客户端,用于向所属 Token Server 通信请求 token。集群限流服务端会返回给客户端结果,决定是否限流。
Token Server:即集群流控服务端,处理来自 Token Client 的请求,根据配置的集群规则判断是否应该发放 token(是否允许通过)。
备注:通过ClusterTokenServer和ClusterTokenClient实现
从Load、总体平均RT、入口QPS和线程数几个维度进行监控,平衡系统负载与入口流量,提高整体稳定性。
系统规则支持四种阈值类型:
Load(仅对 Linux/Unix-like机器生效):当系统 load1 超过阈值,且系统当前的并发线程数超过预计的系统容量时才会触发系统保护。
备注:通过SystemRule.highestSystemLoad实现
RT:当单台机器上所有入口流量的平均RT达到阈值即触发系统保护,单位是毫秒。
备注:通过SystemRule.avgRt实现
线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。
备注:通过SystemRule.maxThread实现
入口QPS:当单台机器上所有入口流量的QPS达到阈值即触发系统保护。
备注:通过SystemRule.qps实现
看完了这篇文章,相信你对“Sentinel服务治理知识点有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。