Sentinel 集成
Sentinel 是 Spring Cloud Alibaba 推荐的流量治理组件(限流、熔断、系统保护),与 Resilience4j 可并存:Sentinel 偏规则中心与控制台,Resilience4j 偏代码注解(见 熔断与限流)。原理见 Sentinel。
依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- 网关限流 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>配置
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080
port: 8719
eager: true
nacos:
# 规则持久化到 Nacos(可选)
server-addr: 127.0.0.1:8848资源定义
@SentinelResource
@SentinelResource(
value = "getOrder",
blockHandler = "getOrderBlock",
fallback = "getOrderFallback"
)
public Order getOrder(Long id) {
return orderClient.fetch(id);
}
public Order getOrderBlock(Long id, BlockException ex) {
throw new BizException("限流中,请稍后");
}
public Order getOrderFallback(Long id, Throwable t) {
return Order.empty();
}OpenFeign 集成
feign:
sentinel:
enabled: trueFeign 接口自动成为 Sentinel 资源,可在 Dashboard 配置流控规则。
Gateway 限流
spring:
cloud:
gateway:
routes:
- id: order
uri: lb://order-service
filters:
- name: RequestRateLimiter
args:
redis-rate-limiter.replenishRate: 10
redis-rate-limiter.burstCapacity: 20
- name: SentinelGatewayFilter或使用 Sentinel Gateway 流控规则(API 分组、热点参数)。
规则类型
| 类型 | 说明 |
|---|---|
| 流控 | QPS、线程数、关联流、链路 |
| 熔断 | 慢调用、异常比例、异常数 |
| 热点参数 | 秒杀 SKU、用户 ID |
| 系统规则 | CPU、Load、RT 自适应 |
Sentinel vs Resilience4j
| 维度 | Sentinel | Resilience4j |
|---|---|---|
| 控制台 | Dashboard 实时规则 | 无官方 UI |
| 生态 | Alibaba、Gateway | Spring Cloud 官方常用 |
| 文档 | Sentinel | Resilience4j |