sentinel整合gateway用nacosConfig推模式持久化

pom.xml

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</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>
        <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>
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>
    </dependencies>

yml

spring:
  main:
    web-application-type: reactive
  # jackson时间格式化
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB
      enabled: true

  mvc:
    throw-exception-if-no-handler-found: true
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER
  application:
    name: gy-gateway #服务名
  cloud:
    nacos:
      discovery:
        server-addr: 10.147.19.9:8848
        namespace: 23d5be0c-46cb-40b2-bf39-bf73b058de76
      config:
        group: DEFAULT_GROUP
        server-addr: 10.147.19.9:8848
        namespace: 23d5be0c-46cb-40b2-bf39-bf73b058de76
        import-check:
          enabled: false
    gateway:
      #      enabled: true
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true #忽略服务名的大小写
    sentinel:
      filter:
        enabled: false #false防止出现接口的资源
      transport:
        dashboard: 10.147.19.9:9090
      datasource:
        GW-FLOW:      #任意取名, 流控规则
          nacos:
            server-addr: 10.147.19.9:8848
            namespace: 23d5be0c-46cb-40b2-bf39-bf73b058de76
            data-id: sentinel.json
            data-type: json
            rule-type: gw-flow
        api:            #任意取名, api管理
          nacos:
            server-addr: 10.147.19.9:8848
            namespace: 23d5be0c-46cb-40b2-bf39-bf73b058de76
            data-id: sentinel_api.json
            data-type: json
            rule-type: gw-api-group

nacosConfig

流控规则 sentinel.json

[{
    "resource": "测试",
    "resourceMode": 1, 
    "limitApp": "default",
    "grade": 1,
    "count": 2,
    "strategy": 0,
    "controlBehavior": 0
}]

api管理 sentinel_api.json

[{
    "apiName":"测试",
     "predicateItems": [
      {
        "pattern": "/good/sys/category/getTreeList",
        "matchStrategy":0   #0-精准,1-前缀,2-正则
      }
    ]
}]

JSON持久化参数含义

网关流控规则(gw-flow)参数含义

com.alibaba.csp.sentinel.adapter.gateway.common.rule;

[{
    "resource": "测试",  # api名称,写请求链路的api名称或者api分组的api名称
    "resourceMode": 1,   # api类型 0-Route ID, 1-api分组, 
     "grade": 1,   # 限流阈值类型(1-QPS, 0-并发线程数)
     "count": 2,    #阈值
     "intervalSec":1,  #间隔单位是秒,默认是 1 秒。
     "controlBehavior": 0,    # 流量整形的控制效果,同限流规则的 controlBehavior 字段,目前支持0-快速失败和1-匀速排队两种模式,默认是快速失败。(代码常量里还有2-CONTROL_BEHAVIOR_RATE_LIMITER,3-CONTROL_BEHAVIOR_WARM_UP_RATE_LIMITER选项,不知道支不支持)
     "burst": 0,   #应对突发请求时额外允许的请求数目,对应Burst size
     "maxQueueingTimeoutMs":500,   #匀速排队模式下的最长排队时间,单位是毫秒,仅在匀速排队模式下生效。
   	"paramItem":{    #参数限流配置。若不提供,则代表不针对参数进行限流,该网关规则将会被转换成普通流控规则;否则会转换成热点规则
   		"index":1, 
   		"parseStrategy":1, #从请求中提取参数的策略,目前支持提取 0-来源 IP(PARAM_PARSE_STRATEGY_CLIENT_IP)、1-Host(PARAM_PARSE_STRATEGY_HOST)、2-任意 Header(PARAM_PARSE_STRATEGY_HEADER)和 3-任意 URL 参数(PARAM_PARSE_STRATEGY_URL_PARAM)四种模式(常量里还有4-PARAM_PARSE_STRATEGY_COOKIE,可能是普通流控用的,网关流控用用不了)。
   		"fieldName":"1", #若提取策略选择 Header 模式或 URL 参数模式,则需要指定对应的 header 名称或 URL 参数名称。
   		"pattern":"1", #参数值的匹配模式,只有匹配该模式的请求属性值会纳入统计和流控;若为空则统计该请求属性的所有值。(1.6.2 版本开始支持) 这参数不确定,官方文档里没写能填什么,或者我没找到,可能和matchStrategy一样
   		"matchStrategy":1,  #参数值的匹配策略,目前支持0-精确匹配(PARAM_MATCH_STRATEGY_EXACT)、3-子串匹配(PARAM_MATCH_STRATEGY_CONTAINS)和2-正则匹配(PARAM_MATCH_STRATEGY_REGEX)。(1.6.2 版本开始支持)
	}
}]

api管理(gw-api-group)参数含义

com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinition

[{
    "apiName":"测试",   #api组名
     "predicateItems": [  #匹配哪些api
      {
        "pattern": "/good/sys/category/getTreeList", #匹配的api
        "matchStrategy":0   #匹配规则0-精准,1-前缀,2-正则
      }
    ]
}]

熔断和普通配置一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值