Alibaba Spring Cloud 十六 Sentinel 流量控制

概述
在分布式或微服务场景下,系统通常需要应对不可预测的流量高峰或突发流量冲击。为了避免由于某个服务被流量“打爆”而引发连锁故障,常见做法就是对服务接口进行限流。Spring Cloud Alibaba Sentinel 提供了非常灵活且强大的流量控制(Rate Limiting)能力,帮助我们在不同场景下保护服务的稳定性。


流量控制的核心概念

  1. 资源(Resource)

    • 资源是 Sentinel 进行限流保护的最小粒度,可以是一个方法、一个服务接口,甚至是一个代码块。
    • 在 Spring Cloud Alibaba 中,常见做法是借助 @SentinelResource 注解标记接口或者在网关层对路径/服务进行保护。
  2. 规则(Rule)

    • 流量控制规则决定了对某个资源施加怎样的限流策略和阈值。
    • 常见要素:
      • 限流阈值类型:QPS 或并发线程数(grade
      • 阈值大小(count
      • 流控效果(controlBehavior,例如快速失败、冷启动(Warm Up)、排队等待)
      • 流控模式(strategy,可以基于调用关系做链路限流,也可以做默认的直接限流等)
  3. 控制效果(Control Behavior)
    Sentinel 提供多种限流行为:

    • 快速失败(RuleConstant.CONTROL_BEHAVIOR_DEFAULT):超过阈值后,直接拒绝请求并抛出异常。
    • 预热/冷启动(RuleConstant.CONTROL_BEHAVIOR_WARM_UP):通过预热方式逐步提升限流阈值,一般适合突发流量时保护系统缓慢升压,避免系统瞬时过载。
    • 排队等待(RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER):超出阈值时排队,超过超时时间后直接拒绝。
  4. 调用关系策略(Strategy)

    • 可以根据调用链路来配置限流规则,当某个上游->下游的调用链路达到阈值时才进行限流,而不是对所有调用统一限流。
    • 对于资源间有复杂调用链路的情况,能实现更精准的限流效果。

流量控制的常见配置方式

1. 通过控制台配置

Sentinel 提供了可视化的控制台(Dashboard),能够实时监控应用的 QPS、RT(响应时间)、限流熔断触发次数等,同时也可以动态管理流控规则,主要流程如下:

  1. 启动 Sentinel 控制台

    • 下载或打包 Sentinel Dashboard 工程(典型端口为 8080),启动后访问 http://localhost:8080
  2. 应用集成 Sentinel

    • pom.xml 中引入依赖:
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十方来财

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值