在微服务世界里,每个服务就像一个小摊位,生意火爆时,人流汹涌,如果没有保护措施,小摊很容易被“压垮”。这时候,你就需要 Sentinel——微服务界的“护身符”,帮你抵御流量暴击、保护系统稳定运行。
本文将带你全面了解 Sentinel,从原理、配置到实战经验,让你的微服务稳如老狗。
1. Sentinel 是什么?
Sentinel 是阿里巴巴开源的微服务流量防护组件,主要功能包括:
功能 类比小故事 作用
流控(Flow Control) 控制入场人数 限制请求量,防止过载
熔断降级(Circuit Breaker) 暂停营业 当服务异常时自动降级,保证系统可用
系统自适应保护 自动调节门口人数 根据系统负载动态调整限流策略
热点参数限流 防止抢手商品被秒光 针对热门资源设置特殊流控
监控与报警 站岗小弟 实时监控流量、异常并报警
简单说,Sentinel 就是微服务系统的 “护身符+守门员”:既保护服务,又监控健康,还能智能应对突发流量。
2. Sentinel 与 Spring Cloud Alibaba 的集成
Spring Cloud Alibaba 提供了原生支持,只需引入依赖即可使用:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
比喻:就像给微服务装上护身符,系统瞬间拥有自我保护能力。
3. Sentinel 核心概念
资源(Resource)
受保护的对象,比如接口、方法或 Dubbo 服务。
规则(Rule)
定义如何限流、熔断或降级,比如 QPS、响应时间阈值。
监控(Metrics)
记录请求数、成功率、异常比例等指标。
控制台(Dashboard)
可视化界面,用于实时管理规则和监控服务健康状态。
4. Sentinel 实战配置
4.1 基本限流
在 application.yml 中配置:
spring:
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:8080
启动 Sentinel Dashboard,访问 http://localhost:8080。
然后,你可以在控制台新增流控规则:
资源名:/hello
阈值类型:QPS
阈值:10
效果:每秒最多允许 10 个请求,超过部分自动被阻止。
4.2 注解式降级
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoController {
@GetMapping("/hello")
@SentinelResource(value = "hello", blockHandler = "handleBlock")
public String hello() {
return "Hello, Sentinel!";
}
public String handleBlock(BlockException ex) {
return "系统繁忙,请稍后再试~";
}
}
@SentinelResource 就像给接口贴上护身符,当流量爆表或服务异常时,会自动调用 handleBlock,保证系统不会“炸掉”。
5. Sentinel 高级功能
热点参数限流
针对热门参数设置特殊流控,例如 /order?productId=1234,避免抢手商品秒光导致系统崩溃。
服务降级策略
按响应时间、异常比例或异常数触发降级,自动保护系统。
系统自适应保护
根据系统负载自动调整阈值,防止过载时全面崩溃。
集群模式
分布式限流,支持多节点共享规则,保证全局一致性。
可视化监控与报警
Dashboard 实时监控 QPS、RT、异常比例
支持钉钉、邮件等多种告警方式
6. 实战经验分享
优先使用注解式或动态规则:方便快速迭代和调整。
限流策略设置合理:避免太紧导致用户体验下降,也不要太松让系统超载。
监控和报警必不可少:Sentinel Dashboard 可以实时观察系统健康。
结合其他中间件使用:Dubbo、Feign、RestTemplate 都可轻松接入 Sentinel。
7. 总结
Sentinel 就是微服务世界的 护身符+守门员:
流控限流,保证系统不过载
熔断降级,防止雪崩
热点参数保护,针对高频请求智能防护
可视化监控,实时掌握服务健康