Sentinel 在实现服务降级时,遵循了以下步骤和原理:
-
资源定义与规则配置:
- Sentinel 中的资源是指需要进行流量控制、熔断降级等操作的服务接口或方法。首先,开发者需要为这些资源在 Sentinel 控制台或者通过动态数据源(如 Nacos、Apollo 等)配置熔断降级规则(DegradeRule),包括资源名称、统计指标(如 RT、异常比例)、阈值、降级策略等。
-
统计与状态判断:
- 当请求到达时,会经过 Sentinel 的责任链中的相关 Slot 进行处理。对于降级规则,
DegradeSlot
会负责收集和统计资源的响应时间(RT)或者异常率。 - 根据配置的规则,如果统计结果满足触发降级条件(例如,最近一分钟内平均响应时间超过设定阈值或者异常比例达到阈值),则会认为该资源进入不健康状态。
- 当请求到达时,会经过 Sentinel 的责任链中的相关 Slot 进行处理。对于降级规则,
-
熔断与降级逻辑执行:
- 当资源被判定为不健康时,Sentinel 将根据预设的降级策略执行相应的动作。常见的降级策略有快速失败(直接拒绝后续请求)、慢启动模式(逐渐增加允许的请求数量)、Warm Up 阶段式恢复等。
- 降级期间,Sentinel 可能会返回预设的 fallback 处理结果,或者将请求重定向至备用服务。
-
状态转换与自适应恢复:
- Sentinel 不仅实现了触发降级,还支持自动恢复机制。当资源性能恢复到正常水平后,系统会自动解除降级状态,恢复正常服务。
- 恢复的具体策略可能依赖于持续监控到的统计数据是否满足恢复条件。
-
事件通知与同步更新:
- Sentinel 内部使用了事件总线机制,当规则变更或者资源状态发生变化时,会触发相应的事件并通知所有关心这些事件的组件。
- 这样可以确保整个系统中所有相关的限流、降级等规则都能及时地得到同步更新。
总之,Sentinel 实现服务降级的核心在于实时监控资源的运行状态,并基于预先设置的规则对资源进行保护性限制。一旦资源表现不佳,即触发降级措施以避免问题蔓延影响整体系统的稳定性。同时,它也具备灵活的策略切换和自动恢复能力,使系统能够在条件改善时迅速恢复正常运作。