Spring Boot集成Sentinel流量防护

为什么你需要Sentinel流量防护

当你的接口突然被高并发刷爆,或者依赖的下游服务挂掉导致连锁故障时,原生的限流手段往往不够灵活。
阿里开源的 Sentinel流量防护 提供了实时限流、降级、熔断等能力,而且接入简单。
本文以最常见的Spring Boot应用为例,教你从零完成集成和配置。

准备工作

要跟着操作,你先得准备好这些东西:

  • 一台能联网的开发机器,已安装JDK 8+ 和 Maven 或 Gradle。
  • 一个Spring Boot项目(可以是新建的空项目,版本建议2.3+)。
  • Sentinel控制台(可选但推荐,方便可视化管理规则)。下载地址可从GitHub Release页获取,或者直接用官方Docker镜像:docker run --name sentinel -d -p 8858:8858 bladex/sentinel-dashboard。启动后浏览器访问 http://localhost:8858,默认账号密码都是 sentinel

步骤一:引入Sentinel依赖

在Spring Boot项目的 pom.xml(Maven)或 build.gradle(Gradle)中添加Sentinel的起步依赖。
这里以Maven为例:


    com.alibaba.cloud
    spring-cloud-starter-alibaba-sentinel
    2021.0.5.0
版本号建议使用与你Spring Cloud Alibaba对齐的版本。如果不清楚,可以先去Maven中央仓库查最新的稳定版。

步骤二:配置应用连接控制台

application.yml 中添加Sentinel配置,指向上面启动的控制台地址:

spring:
  application:
    name: my-sentinel-app
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8858
        port: 8719

transport.dashboard 是控制台地址,port 是应用与控制台通信的端口,默认8719,确保不冲突。

步骤三:定义一个限流资源

在Spring Boot的Controller中,使用Sentinel的 @SentinelResource 注解标记需要防护的接口:

@RestController
public class DemoController {

    @GetMapping("/hello")
    @SentinelResource(value = "hello", blockHandler = "blockHandler")
    public String hello() {
        return "Hello, Sentinel!";
    }

    public String blockHandler(BlockException e) {
        return "请求被限流了,请稍后重试";
    }
}

@SentinelResourcevalue 是资源名,后续在控制台通过这个名字配置规则。blockHandler 指定限流后的降级方法。

步骤四:在控制台配置流控规则

启动应用后,打开Sentinel控制台(http://localhost:8858),左侧会看到你的应用名称。
点击进入,在“流控规则”页面点击“新增流控规则”:

  • 资源名:填写 hello(与注解中一致)。
  • 阈值类型:选择 QPS 或并发线程数,新手推荐 QPS。
  • 单机阈值:比如设置为 5,表示每秒最多通过5个请求。
  • 其他选项保持默认,保存。

避坑指南

  1. 控制台看不到应用:检查应用启动后是否有日志 Sentinel log: register to dashboard success。如果一直超时,可能是控制台端口被防火墙拦截,或者在 application.ymlspring.cloud.sentinel.transport.dashboard 写错了IP。
  2. 限流规则不生效:确认 @SentinelResourcevalue 与控制台资源名完全一致(区分大小写)。另外如果使用了 blockHandler,方法签名必须正确(返回类型、参数列表匹配)。
  3. 版本冲突:Spring Cloud Alibaba和Sentinel版本需对应,否则启动报错。去官方版本说明页确认后再引入。

效果验证

用Postman或curl连续快速访问 http://localhost:8080/hello,当请求数超过5次/秒时,会直接返回 请求被限流了,请稍后重试
同时控制台的实时监控图表会显示流量曲线和拒绝次数。

你也可以用压测工具如 ab 验证:

ab -n 100 -c 10 http://localhost:8080/hello

观察返回的响应中部分请求被限流即可。

高频问题解答

Q:Sentinel流量防护和Hystrix有什么区别?
A:Sentinel支持实时监控、动态规则推送、更细粒度的流量控制(如热点参数限流),而Hystrix已停止维护。推荐新项目使用Sentinel。

Q:生产环境必须用控制台吗?
A:控制台让规则管理更直观,但生产建议用Nacos动态配置,避免失控。参考官方文档结合Nacos使用。

Q:限流阈值设多少合适?
A:没有固定值,需要根据接口的RT(响应时间)和机器资源预估。可以先设为峰值QPS的80%,再根据监控调整。

总结

通过以上几步,你已完成了Sentinel流量防护的集成和基础限流配置。
先按教程完整跑通,再根据业务需要开启降级、热点限流等高级功能。
遇到异常时优先回看避坑部分,大部分问题出在依赖版本或控制台连通性上。

分享到:
上一篇
Nacos服务注册从零上手:配置、步骤与避坑指南
下一篇
SkyWalking链路追踪:从零搭建
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意