Sentinel配置Gateway 实现限流

文章介绍了如何在SpringCloudGateway中集成SentinelStarter,包括需要引入的依赖和禁用URL粒度的配置。此外,还详细讲解了Sentinel流控配置的持久化,特别是使用Nacos作为数据源的步骤,以及相关的配置示例。最后,提到了在Nacos中添加配置以完成设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gateway若想跟 Sentinel Starter 配合使用,需要加上 spring-cloud-alibaba-sentinel-gateway 依赖,同时需要添加 spring-cloud-starter-gateway 依赖来让 spring-cloud-alibaba-sentinel-gateway 模块里的 Spring Cloud Gateway 自动化配置类生效:

添加如下三个依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<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>

由于sentinel starter依赖默认情况下就会为当前服务的所有的HTTP服务提供限流埋点,所以只要项目引入了sentinel starter 依赖,那么当前项目中的所有可以通过HTTP方式访问到的资源都将被sentinel保护起来。但在 Gateway网关和Sentinel的整合中, Sentinel 网关流控默认的粒度是 route 维度以及自定义 API 分组维度,默认不支持 URL 粒度;所以在Sentinel网关的项目中需要禁用 URL 粒度 的配置

配置项为:spring.cloud.sentinel.filter.enabled=false

Sentinel 流控配置持久化

首先添加sentinel持久化依赖,这里选择 nacos作为持久化源

<!-- sentinel数据持久化 -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

注意版本要和nacos的client版本一致,不然可能连接不上nacos

源码如下:

Sentinel 的数据源配置项是一个Map,由于Key键是String类型,所以数据源的名称是可以随便取的,例如我上面的master,就决定了你将采用那种数据源,一共有6中持久化的方式可以选择。

配置示范:

spring:
  application:
    name: gateway-sentinel
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
        - id: blog-service
          uri: lb://blog-service
          predicates:
            - Path=/api/service/**
          filters:
            - StripPrefix=1

    sentinel:
      # 网关项目禁用 URL 粒度保护
      filter:
        enabled: false
      # 默认情况下 Sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包
      # 配置 sentinel.eager=true 时,取消Sentinel控制台懒加载功能
      eager: true
      transport:
        port: 8719
        dashboard: 192.168.56.10:8858
      datasource:
        # 数据源名称,可以随便取
        master:
          # 数据源类型
          nacos:
            server-addr: 192.168.56.10:8848
            username: nacos
            password: nacos
            namespace: 06d75982-b107-4468-a275-1288c8198fc4
            group-id: gateway
            # 限流配置文件名称
            data-id: sentinel.json
            # nacos中持久化存储限流配置的文件类型
            data-type: json
            # 如果是网关,则必须选择 gw 开头的限流规则,不然无效
            rule-type: gw-flow

# Actuator Web 访问端口
management:
  server:
    port: 8081
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always

server:
  port: 9999

以上配置完成之后在nacos 中添加相关配置:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

龙茶清欢

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

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

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

打赏作者

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

抵扣说明:

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

余额充值