gateway集成sentinel和nacos实现限流和pull持久化

核心依赖

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

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



<!--        注册中心依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
<!--        配置中心依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

网关,网关集成sentinel,配置中心注册中心依赖,持久化到nacos依赖

网关的yaml

spring:
  application:
    name: gateway
  config:
    import: optional:nacos:${spring.application.name}.yaml
  cloud:

    nacos:
      server-addr: 127.0.0.1:8848
      username: nacos
      password: nacos
      config:
        namespace: 737f7348-61ed-4863-b349-0f125a7f7538
        group: DEFAULT_GROUP
        refresh-enabled: true
      discovery:
        group: DEFAULT_GROUP
        namespace: 737f7348-61ed-4863-b349-0f125a7f7538
    loadbalancer:
      nacos:
        enabled: true



server:
  port: 8888

logging:  # 添加日志配置
  level:
    org.springframework.cloud.gateway: DEBUG

对应nacos配置中心的yaml

spring:
  cloud:
    gateway:
      routes:
        - id: product-service
          uri: lb://product
          predicates:
            - Path=/product-service/**
          filters:
            - StripPrefix=1
        - id: stock-service
          uri: lb://stock
          predicates:
            - Path=/stock-service/**
          filters:
            - StripPrefix=1
      discovery:
        locator:
          enabled: true  # 启用服务发现路由
    
        # Sentinel配置
    sentinel:
      # 取消控制台懒加载(默认sentinel是懒加载)
      eager: true
      transport:
        # Sentinel的控制台地址
        dashboard: localhost:8718
      scg:
        fallback:
          mode: response
          response-status: 429
          response-body: '{"code": 429, "message": "服务繁忙,请稍后重试"}'
        # 配置流控规则
      datasource:
        gw-flow:
          nacos:
            server-addr: localhost:8848
            data-id: ${spring.application.name}-flow-rules
            group-id: DEFAULT_GROUP
            namespace: 737f7348-61ed-4863-b349-0f125a7f7538
            data-type: json
            rule-type: gw-flow

 持久化的流控json文件

datasource:
        gw-flow:
          nacos:
            server-addr: localhost:8848
            data-id: ${spring.application.name}-flow-rules
            group-id: DEFAULT_GROUP
            namespace: 737f7348-61ed-4863-b349-0f125a7f7538
            data-type: json
            rule-type: gw-flow

1、刚刚nacos中的配置文件中,这几个就是来指定持久化文件怎么配置的,放在哪里叫什么名字,就根据上面的这个配置指定的,自己配置不一定跟这里一样

2、这时候启动网关就可以去sentinel控制台了

3、这时候是没有信息的需要随便请求几下,这时候就可以看到sentinel中已经存在刚刚的请求了

4、现在就可以对当前请求进行流控,熔断降级这里是没做的,单说流控,这里为什么不做熔断,假设熔断了就是对某个服务整个服务进行熔断,可能出现问题的只是某个接口,不应该熔断整个应用,应该微服务搭配sentinel去做更细的熔断降级

5、如果配置都没有出错,这时候就可以看到流控信息是已经持久化的了,要注意这里的rule-type:gw-flow是网关流控

对应的微服务配置,也就是网关的路由转发对象

确保这个服务要在nacos中注册,也要开启网关的负载均衡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值