Sentinel 支持多种降级策略,旨在帮助开发者在面对系统不稳定或潜在故障时,通过提前拒绝服务请求或提供默认的备用响应,来避免系统崩溃或性能急剧下降。以下是 Sentinel 中常见的几种降级策略及其应用场景:
1. 异常比例(Exception Ratio)
- 描述:当资源的异常请求比例超过设定的阈值时,触发降级。例如,如果在最近的100次请求中有20次出现了异常,且设定的异常比例阈值为10%,那么将会触发降级。
- 应用场景:适用于检测服务的整体健康状况,尤其是在服务开始频繁出现异常时,及时降级可以防止更多的请求进入系统,造成更大的影响。
2. 异常数(Exception Count)
- 描述:当在指定的时间窗口内,资源的异常次数达到或超过了设定的阈值时,触发降级。
- 应用场景:适用于监控短时间内的异常情况,特别是当系统突然出现大量异常时,可以迅速采取行动。
3. 响应时间(Response Time)
- 描述:当资源的平均响应时间或响应时间的百分位数超过设定的阈值时,触发降级。例如,如果资源的平均响应时间超过了500毫秒,且设定的阈值为300毫秒,那么将触发降级。
- 应用场景:适用于监控服务的响应速度,特别是对于那些对延迟敏感的应用场景,如实时交易系统或在线游戏等。
4. 系统级降级
- 描述:Sentinel 还支持基于系统层面的降级策略,如根据系统的负载、CPU 使用率、平均响应时间、入口请求的QPS和并发线程数等多个维度进行监控,并综合判断是否触发降级。
- 应用场景:适用于全面监控系统的整体运行状态,防止系统过载或资源耗尽导致的服务不可用。
5. 热点参数限流
- 描述:除了基于 RT 和异常比率的降级策略外,Sentinel 还支持基于热点参数的限流策略。通过配置热点参数规则,可以对某些关键参数进行限流,防止因某些参数值异常导致系统崩溃。
- 应用场景:适用于需要对某些特定参数进行限流的场景,特别是当某些参数值可能导致大量并发请求或异常行为时。
6. 动态降级
- 描述:动态降级是指根据实时监控数据动态调整降级策略,使得系统能够更加灵活地应对不同的运行环境。
- 应用场景:适用于需要根据实时数据调整降级策略的场景,如在网络拥塞或硬件故障时,动态调整降级阈值以适应当前环境。
7. 自定义降级策略
- 描述:Sentinel 允许开发者自定义降级策略,通过扩展 Sentinel 的插件机制来实现更为复杂的降级逻辑。
- 应用场景:适用于需要特殊降级逻辑的场景,如根据特定的业务规则来决定是否降级。
总结
Sentinel 提供了多种降级策略来应对不同的应用场景,通过合理的配置,可以在系统出现不稳定或潜在故障时,有效地保护系统免受进一步损害。这些策略可以帮助开发者更好地控制服务的可用性和性能,确保在任何情况下都能为用户提供良好的体验。