在 Sentinel
中,系统规则是一种特殊的流量控制规则,它的主要目的是对整个系统进行资源保护,而不是针对特定的接口或服务。系统规则通常用于保护整个系统的稳定性,避免由于系统负载过高而导致的服务不可用。
系统规则的工作原理
系统规则的工作原理基于以下两个核心概念:
-
Load shedding(负载丢弃):当系统的负载达到预设的阈值时,Sentinel 会开始拒绝部分进入系统的流量,以减轻系统负担,防止系统过载。
-
降级(Degradation):当系统的健康状况下降,例如错误率升高,响应时间变长等,Sentinel 会自动降级部分请求,返回默认的降级响应,以保证核心服务的正常运作。
具体来说,系统规则可以基于以下指标进行配置:
- 入口 QPS(每秒查询数):限制进入系统的请求数量,如果超过设定的阈值,则触发流量控制。
- 平均 RT(平均响应时间):设置系统的平均响应时间上限,如果超过这个时间,则认为系统压力过大,可能会触发流量控制。
- 入口 TPS(每秒事务数):类似于 QPS,但是可以更精确地控制事务级别的吞吐量。
- 异常比例:根据一段时间内请求的异常比例来决定是否触发降级。
- 异常数量:直接指定在一个统计周期内的最大异常数,超过该数目后触发降级。
如何使用系统规则
-
定义规则:首先需要定义一组系统规则,包括上述提到的各种阈值条件。这些规则可以通过 Sentinel 控制台手动添加,也可以通过动态数据源(如 Nacos、Zookeeper 等)进行配置。
-
应用规则:将定义好的系统规则应用到 Sentinel 中。当系统运行时,Sentinel 会持续监控系统的各项指标,一旦发现达到预设的阈值,就会根据规则采取相应的流量控制措施。
-
触发流量控制:当满足系统规则中定义的条件时,Sentinel 将会执行流量控制,可能的行为包括但不限于拒绝请求、返回特定的错误码或重试策略等。
-
动态调整:系统规则可以根据实际运行情况进行动态调整,以适应不断变化的系统负载情况。
通过这种方式,系统规则可以帮助开发者在不影响用户体验的前提下,有效地保护系统资源,避免因过载而导致的服务崩溃。