2025-07-04
Spring Cloud
0

目录

Spring Cloud 整合 Sentinel 完全指南
一、Sentinel 核心功能详解
1. 流量控制
2. 熔断降级
3. 系统保护
4. 热点防护
二、环境配置
1. 依赖引入
2. 基础配置
三、流量控制实现
1. 注解方式
2. 流控规则参数
四、熔断降级策略
五、控制台监控
六、规则持久化
七、最佳实践
八、问题排查

Spring Cloud 整合 Sentinel 完全指南

一、Sentinel 核心功能详解

1. 流量控制

  • QPS限流:控制每秒请求量,防止系统过载
  • 并发线程控制:限制资源并发线程数,避免线程耗尽
  • 流控模式
    • 直接限流:针对当前资源
    • 关联限流:关联资源超限时触发
    • 链路限流:基于调用链路限流

2. 熔断降级

  • 慢调用比例:响应时间超过阈值触发熔断
  • 异常比例:异常请求占比超阈值触发
  • 异常数:单位时间内异常数超阈值触发
  • 熔断恢复:熔断后自动检测恢复

3. 系统保护

  • Load自适应:根据系统负载动态调整流量
  • CPU使用率保护:CPU超阈值时自动限流
  • 平均RT保护:响应时间过长时触发保护

4. 热点防护

  • 参数限流:针对热点参数单独限流
  • 参数例外项:支持特定参数特殊配置
  • 统计窗口:可配置统计时间窗口

二、环境配置

1. 依赖引入

xml
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>

2. 基础配置

yaml
spring: cloud: sentinel: transport: dashboard: localhost:8080 port: 8719 eager: true filter: url-patterns: /**

三、流量控制实现

1. 注解方式

java
@GetMapping("/api/order") @SentinelResource(value = "orderQuery", blockHandler = "handleBlock", fallback = "handleFallback") public Order queryOrder(Long id) { // 业务逻辑 }

2. 流控规则参数

参数类型说明示例
gradeint0-线程数,1-QPS1
countdouble阈值100.0
strategyint0-直接,1-关联,2-链路0
controlBehaviorint0-快速失败,1-WarmUp,2-排队0

四、熔断降级策略

graph TD
    A[触发条件] --> B{慢调用比例}
    A --> C{异常比例}
    A --> D{异常数}
    B --> E[RT>阈值]
    C --> F[比例>阈值]
    D --> G[次数>阈值]

五、控制台监控

监控指标正常范围告警阈值
Pass QPS<80%阈值≥90%阈值
Block QPS<5%总量≥10%总量
平均RT<500ms≥1000ms
异常比例<5%≥20%

六、规则持久化

sequenceDiagram
    participant App
    participant Nacos
    participant Sentinel
    App->>Nacos: 1.获取规则
    Nacos-->>App: 2.返回规则
    App->>Sentinel: 3.加载规则
    Sentinel-->>Nacos: 4.心跳同步

七、最佳实践

  1. 配置原则

    • 先监控后配置
    • 阈值逐步调整
    • 保留30%缓冲
  2. 性能调优

参数建议值说明
metric.statistic.interval2000ms统计间隔
log.max.file.count7日志保留天数

八、问题排查

graph LR
    A[控制台无数据] --> B[检查配置]
    A --> C[检查网络]
    A --> D[检查依赖]
    B --> E[eager=true]
    C --> F[端口连通]
    D --> G[适配器依赖]