1. 应用场景
Sentinel 有三大核心应用场景
1.1 流量控制(限流)
**场景:**商品服务突然来了 10000 并发,但它只能扛 100。如果不拦着,商品服务直接崩。
Sentinel 作用:
- 设定每秒最多 100 个请求
- 多出来的请求 直接拒绝 / 排队
- 保证服务不被冲垮
1.2 熔断降级
场景: 订单服务调用商品服务,但商品服务超时、宕机、报错。如果不处理,订单服务也会被拖死 → 整个链路雪崩。
Sentinel 作用:
- 发现商品服务不行 → 直接切断调用
- 走 Fallback 兜底(返回默认数据)
- 不让故障蔓延
1.3 系统负载保护
**场景:**CPU 100%、Load 过高、内存爆了。
Sentinel 作用:
- 监控系统负载
- 高负载时 自动拒绝新请求
- 保护服务器不宕机
2. 安装控制台

下载后使用java -jar 命令启动即可,默认端口是8080,默认账户密码都是sentinel:

配置:
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080 # Sentinel 控制台地址
eager: true # 立即初始化 Sentinel
配置完成后启动服务就可以在sentinel控制台看到:

3. 资源
资源 :就是需要被限流、熔断、降级、监控的入口 / 方法 / 接口。只要被 Sentinel 管控、能配置规则的,都叫资源。
3.1 会被自动识别的资源
1. 所有 SpringMVC 接口(控制器 URL)
只要是 @RestController / @Controller 的接口请求路径,自动视为资源
例如:/product/{id}、/order/create
自动统计 QPS、异常、耗时,控制台直接看到链路
2. OpenFeign 远程调用接口
整合 OpenFeign 后,所有 Feign 调用方法自动变成资源
Feign 调用超时、异常 → 自动触发熔断、降级
控制台能看到 Feign 调用的资源名
3. Gateway 网关路由接口
Spring Cloud Gateway 的路由路径,自动作为资源用来做网关层面全局限流、流量管控
3.2 需要手动标记才会被当成资源
1. 普通业务 Service 方法
@Service 里的普通业务方法,默认不是资源要加@SentinelResource注解:
java
@SentinelResource("getUserInfo")
public User getUserInfo(Long id){...}
加了注解才会被 Sentinel 管控、限流、熔断。
2. 定时任务、异步方法
@Scheduled、@Async 方法 默认不自动识别,需要手动 @SentinelResource
3. 本地普通工具类、普通方法
没有任何框架注解的普通 Java 方法,完全不会自动当成资源
4. 基本使用

在控制台的蔟点链路我们可以看到被调用过的服务,右边可以进行操作,我们以流控为例子:

这里点进去可以进行设置,例如这里设置了单机阈值为1,也就是每秒只能走一个请求,如果超过了会出现如下提示:
