声明下:和上一篇 大同小异

1 pom.xml

        <!-- Sentinel Spring Cloud Starter(必须!提供自动配置) -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

        <!-- Sentinel 规则持久化到 Nacos -->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>

2 yml配置

server:
  port: 9991

spring:
  application:
    name: travel-order
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: public
        group: DEFAULT_GROUP
        username: nacos
        password: nacos
      config:
        server-addr: 127.0.0.1:8848
        namespace: public
        group: DEFAULT_GROUP
        file-extension: yaml
        username: nacos
        password: nacos

    # ===== Sentinel =====
    sentinel:
      transport:
        # Sentinel Dashboard 地址,另外有个8719的端口,故意没写,Sentinel会自动处理,不然要手动把每个写的不一样,麻烦
        dashboard: 127.0.0.1:8858
      eager: true # 启动时立即向 Sentinel 控制台注册,默认为 false
      # Sentinel 规则持久化:从 Nacos 拉取规则
      datasource:
        ds1:
          nacos:
            server-addr: 127.0.0.1:8848
            dataId: ${spring.application.name}-flow-rules
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: flow # 注意这
            username: nacos
            password: nacos
        ds2:
          nacos:
            server-addr: 127.0.0.1:8848
            dataId: ${spring.application.name}-degrade-rules
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: degrade # 注意这
            username: nacos
            password: nacos

3 在nacos中编写限流,熔断的规则

文件名 Data ID: travel-order-flow-rules  格式:json

[
    {
        "resource": "/order/scenic/{scenicId}",
        "count": 50,
        "grade": 1,
        "limitApp": "default",
        "strategy": 0,
        "controlBehavior": 0
    },
    {
        "resource": "/order/list",
        "count": 100,
        "grade": 1,
        "limitApp": "default",
        "strategy": 0,
        "controlBehavior": 0
    }
]

-------------------------------------

文件名 Data ID: travel-order-degrade-rules  格式:json

[
    {
        "resource": "/order/scenic/{scenicId}",
        "grade": 0,
        "count": 2000,
        "timeWindow": 15,
        "minRequestAmount": 10,
        "statIntervalMs": 1000,
        "slowRatioThreshold": 0.6
    },
    {
        "resource": "/order/list",
        "grade": 0,
        "count": 3000,
        "timeWindow": 10,
        "minRequestAmount": 5,
        "statIntervalMs": 1000,
        "slowRatioThreshold": 0.5
    }
]

4 后期 更改规则 从 nacos 中改不要在sentinel web控制台改,因为改了,也不会保存进nacos中,除非你对Sentinel Dashboard 源码 二次开发

5 现在在sentinel的web控制台,就能看见写的规则了,可以测试了

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐