前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sentinel服务治理知识梳理【原理笔记】

Sentinel服务治理知识梳理【原理笔记】

作者头像
瓜农老梁
发布2019-09-09 17:19:59
1.2K0
发布2019-09-09 17:19:59
举报
文章被收录于专栏:瓜农老梁瓜农老梁
目录
代码语言:javascript
复制
1、流量控制
2、熔断降级
3、热点参数限流
4、集群流控
5、系统防护
1、流量控制

把随机来的流量进行整形,将流量控制在系统的能力范围内,增强应用可用性。

通过运行指标控制 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来实现

2、熔断降级

熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出 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策略

通常对弱依赖进行熔断,对强依赖进行隔离降级。 弱依赖:若依赖的第三方应用出错不会影响而整体流程,则称之为弱依赖。 强依赖:若依赖的第三方应用或组件,或者应用自身的内部方法出错会影响而整体流程,则称之为强依赖。

3、热点参数限流

热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的Top K数据,并对其访问进行限制。比如: 商品ID为参数,统计一段时间内最常购买的商品ID并进行限制 用户ID为参数,针对一段时间内频繁访问的用户ID进行限制 备注:使用ParamFlowRule.setParamFlowItemList和ParamFlowRuleManager.loadRules

4、集群流控

实际情况下流量到每台机器可能会不均匀,仅靠单机维度去限制的话会无法精确地限制总体流量。通过精确地控制整个集群的调用总量,结合单机限流,实现集群整体防护。 集群流控中共有两种身份: Token Client:集群流控客户端,用于向所属 Token Server 通信请求 token。集群限流服务端会返回给客户端结果,决定是否限流。 Token Server:即集群流控服务端,处理来自 Token Client 的请求,根据配置的集群规则判断是否应该发放 token(是否允许通过)。 备注:通过ClusterTokenServer和ClusterTokenClient实现

5、系统防护

从Load、总体平均RT、入口QPS和线程数几个维度进行监控,平衡系统负载与入口流量,提高整体稳定性。 系统规则支持四种阈值类型: Load(仅对 Linux/Unix-like机器生效):当系统 load1 超过阈值,且系统当前的并发线程数超过预计的系统容量时才会触发系统保护。 备注:通过SystemRule.highestSystemLoad实现

RT:当单台机器上所有入口流量的平均RT达到阈值即触发系统保护,单位是毫秒。 备注:通过SystemRule.avgRt实现

线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。 备注:通过SystemRule.maxThread实现

入口QPS:当单台机器上所有入口流量的QPS达到阈值即触发系统保护。 备注:通过SystemRule.qps实现

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜农老梁 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1、流量控制
  • 2、熔断降级
  • 3、热点参数限流
  • 4、集群流控
  • 5、系统防护
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档