Spring Cloud Alibaba Sentinel 是一个用于高并发系统的流量控制、熔断降级、系统防护等场景的开源框架。Sentinel 提供了丰富的流量控制策略,这些策略可以用来保护下游服务免受突发流量的影响,确保系统的稳定性和响应性。以下是 Sentinel 中常见的几种流量控制规则:
-
QPS 限流:
- 这是最基本的流量控制方式,可以根据请求的 QPS (Queries Per Second) 进行限流。可以为每个资源设置不同的 QPS 限制值。
- 可以针对不同的维度(如入口网关、服务、接口等)进行限流。
-
热刺(热点规则):
- 对于特定的热点数据(如商品ID、用户ID等)进行限流,避免因热点 key 访问过频而导致系统不稳定。
-
并发线程数限流:
- 控制并发的线程数,当达到最大并发线程数时,超出的请求会被拒绝或加入队列等待。
-
链路熔断:
- 当某个依赖服务出现异常时(如响应超时、异常比例过高),可以暂时切断对该服务的调用,避免影响整个系统的稳定性。当该服务恢复正常后,熔断机制可以自动恢复或逐步开放访问。
-
降级规则:
- 当服务调用失败率超过阈值时,可以对服务进行降级处理,直接返回预设的错误信息而不是继续尝试调用。
-
系统限流:
- 根据机器的负载情况(如线程数、CPU 使用率等),对整个系统进行限流,防止系统被压垮。
-
流控规则的隔离:
- 可以通过设置隔离策略(如直接拒绝、WarmUp、排队等待等)来处理超出限制的请求。
-
动态规则发布:
- Sentinel 支持动态发布规则,可以在不重启应用的情况下调整流量控制规则。
-
流控条件表达式:
- 支持基于参数的限流,可以根据请求中的某些参数值来决定是否进行限流。
这些规则可以通过 Sentinel 控制台进行配置和管理,也可以通过编程的方式动态地添加、修改或删除规则。在 Spring Cloud Alibaba 中使用 Sentinel 时,通常会结合 Spring Boot 和 Sentinel 的 Starter 包来简化配置和集成过程。通过 Sentinel Dashboard 或者通过编写代码的方式,可以方便地定义和管理上述提到的各种流量控制规则。