Spring Cloud Alibaba 的 Sentinel 是一个功能强大、灵活的流量控制、熔断降级、系统保护组件,主要用于保护微服务系统的稳定性。它在熔断和限流方面有显著优势,以下是详细解析:

Sentinel 是如何实现熔断和限流的?

1. 限流(Flow Control)

Sentinel 使用 滑动窗口 + 令牌桶/漏桶变种算法 来实现限流,主要支持以下几种策略:

  • QPS 模式:每秒请求数(最多多少次/秒)。
  • 线程数模式:控制某个资源最多同时并发的线程数量。
  • 关联限流:如果访问资源 A 时依赖资源 B,可以根据 B 的 QPS 来限流 A。
  • 链路限流:根据调用链的入口不同来限流,例如同一个方法被不同接口调用时分开限流。
  • 集群限流:多个实例共同控制总 QPS 上限。

限流处理方式包括:

  • 直接拒绝(默认)
  • 排队等待(Warm Up 模式)
  • 慢启动(渐进增加阈值)

2. 熔断降级(Degrade)

Sentinel 熔断是基于资源调用的异常比例、异常数、响应时间等进行判断:

  • 响应时间(RT)熔断:当资源的平均响应时间超过阈值,进入熔断状态。
  • 异常比例熔断:一段时间内,异常比例超过阈值则熔断。
  • 异常数熔断:异常数超过设定阈值即熔断(适用于低并发系统)。

熔断后资源会进入“冷却期”,期间请求会被快速失败;冷却期后尝试恢复(半开状态)。

Sentinel vs Hystrix 的区别

特性SentinelHystrix(已停止维护)
熔断机制支持多种规则(RT、异常比例/数)主要是异常比例熔断
限流能力强,支持多维度限流基本不支持限流
系统自适应保护支持(如 CPU、RT、线程等)不支持
控制台提供强大控制台,动态配置规则配置基本靠代码或配置文件
性能更轻量,低开销,适合大规模系统较重,线程隔离成本高
状态活跃维护,被阿里生态广泛使用已停止维护(2020年)

总结一句话:

Sentinel 更适合现代微服务系统,功能更丰富,支持细粒度的限流与熔断控制,性能更优,是 Hystrix 的升级替代方案。

如需使用,请结合:

  • @SentinelResource 注解
  • 配合控制台动态配置
  • 可结合 Nacos 实现规则的持久化与推送