Sentinel 提供了多种流量控制策略,每种策略都有其特定的应用场景和目的。以下是 Sentinel 中常见的流量控制策略:
-
QPS 基于计数器 (QPS Based on Counter):
- 这是最基本的流量控制策略,根据每秒请求数(QPS)来限制流量。你可以为每个资源设定一个最大QPS值,当请求超出这个值时,就会触发限流。
-
QPS 基于令牌桶算法 (QPS Based on Token Bucket Algorithm):
- 令牌桶算法是一种流量整形技术,它允许突发流量,同时限制长期平均流量。在这种模式下,系统会按照固定速率向桶中添加令牌,请求只有在有足够令牌时才能通过。
-
QPS 基于滑动窗口 (QPS Based on Sliding Window):
- 滑动窗口算法可以在一个时间窗口内统计请求次数,并据此进行限流。这种方式可以更精确地控制短时间段内的流量。
-
热点规则 (Hot Item Rule):
- 用于限制对热点资源的访问频率,例如热门商品ID、热门用户ID等。这种策略可以保护热点资源不被突发流量压垮。
-
流控规则 (Flow Control Rule):
- 通用的限流规则,可以基于QPS、TPS(每秒事务数)或者其他自定义指标来限定流量。可以设置全局限流或针对特定资源限流。
-
依赖流控 (Dependency Flow Control):
- 当某个依赖服务出现故障或响应变慢时,可以对依赖该服务的请求进行限流,以保护主服务不受影响。
-
降级策略 (Degrade Policy):
- 当某资源的错误率超过预设阈值时,可以触发降级策略,即减少对该资源的请求或直接返回一个默认的错误响应。
-
隔离策略 (Isolation Policy):
- 通过对不同的资源或服务进行隔离,可以防止一个服务的故障波及到其他服务。例如,可以为每个服务分配固定的线程池,当某个服务的请求过多时,不会占用其他服务的资源。
这些流量控制策略可以单独使用,也可以组合起来使用,以适应不同的业务需求和场景。通过 Sentinel 控制台或者编程接口,可以方便地配置和管理这些策略。