SpringCloud Alibaba Sentinel 规则持久化

一、前言

        接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第十七篇,即使用 Sentinel 实现规则持久化。

二、概述

        从前面我们做的实验可知,一旦我们重启应用,sentinel 规则将消失,生产环境需要将配置规则进行持久化,以保证正常的运行。

        可以将限流配置规则持久化进 Nacos 保存,只要刷新 8401 某个 res t地址,sentinel 控制台的流控规则就能看到,只要 Nacos 里面的配置不删除,针对 8401 sentinel 上的流控规则持续有效。

三、实现步骤

3.1 添加 maven 依赖

        首先确保 cloudalibaba-consumer-nacos-order8401 模块的 pom.xml 中引入了 相关的依赖,如下:

<!--SpringCloud ailibaba sentinel-datasource-nacos 后续做持久化用到-->
<dependency>
	<groupId>com.alibaba.csp</groupId>
	<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

3.2 修改配置文件

         接下来需要在 application.yml 中添加 Nacos 数据源的支持,如下:

server:
  port: 8401

spring:
  application:
    name: cloudalibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # Nacos服务注册中心地址
    sentinel:
      transport:
        dashboard: localhost:8080 # 配置Sentinel dashboard地址
        # 默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口
        port: 8719
      # 添加 Nacos 数据源的配置
      datasource:
        ds1:
          nacos:
            server-addr: localhost:8848
            dataId: cloudalibaba-sentinel-service
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: flow
management:
  endpoints:
    web:
      exposure:
        include: '*'

3.3 配置 nacos

        打开 nacos 的管理界面,添加 nacos 的业务规则配置,如下图:

配置详解如下: 

        1、resource:资源名称
        2、limitApp:来源应用
        3、grade:闻值类型,0 表示线程数,1 表示 QPS
        4、count:单机阈值
        5、strategy:流控模式,0 表示直接,1 表示关联,2 表示链路
        6、controlBehavior:流控效果,0 表示快速失败,1 表示 Warm Up,2 表示排队等待
        7、clusterMode:是否集群 

3.4 测试

        启动 8401 模块后, 调用 http://localhost:8401/rateLimit/byUrl,刷新 sentinel 发现流控规则有了,如下图:

        快速访问测试接口,可以看到,限流是没有任何问题的,如下图:

        此时停止 8401 模块,再看 sentinel 管理界面,如下图,可以看到,流控规则没有了

        重新启动 8401 再看 sentinel,等待一会,并且多次调用 http://localhost:8401/rateLimit/byUrl,如下图,重新配置出现了,持久化验证通过。

相关推荐

  1. 持久存储 StorageClass

    2024-04-08 16:14:03       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-08 16:14:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-08 16:14:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-08 16:14:03       82 阅读
  4. Python语言-面向对象

    2024-04-08 16:14:03       91 阅读

热门阅读

  1. 什么是灰度发布

    2024-04-08 16:14:03       34 阅读
  2. 【Vue】 Vue项目中的跨域配置指南

    2024-04-08 16:14:03       31 阅读
  3. 富格林:打击暗箱黑幕正常出金

    2024-04-08 16:14:03       30 阅读
  4. C++ STL中Queue和Stack的用法

    2024-04-08 16:14:03       35 阅读
  5. ElasticSearch 常用查询优化方式

    2024-04-08 16:14:03       34 阅读
  6. Nginx基础(03)

    2024-04-08 16:14:03       35 阅读
  7. 顺序表(C语言)

    2024-04-08 16:14:03       33 阅读
  8. 室内设计专业MR混合现实情景实训教学系统应用

    2024-04-08 16:14:03       36 阅读