SpringCloud Alibaba Sentinel 规则持久化

一、前言

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

二、概述

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

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

三、实现步骤

3.1 添加 maven 依赖

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

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

3.2 修改配置文件

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

ruby 复制代码
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,如下图,重新配置出现了,持久化验证通过。

相关推荐
Dragon Wu4 天前
SpringCache 缓存使用总结
spring boot·后端·spring·缓存·springcloud
七夜zippoe4 天前
微服务链路追踪实战:SkyWalking vs Zipkin 架构深度解析与性能优化指南
java·开发语言·微服务·springcloud·sleuth·zipkin
梦想总是可以实现的7 天前
SpringCloud2024 + JDK17实战:手把手教你从零搭建微服务全家桶(含Eureka+Gateway+Redis)
springcloud·微服务架构·java开发·分布式系统
九转苍翎14 天前
微服务学习笔记(1)——SpringColud概述
spring boot·maven·springcloud
七夜zippoe15 天前
OpenFeign全解 声明式REST客户端原理与配置实战
java·负载均衡·springcloud·openfeign·动态代理·核心配置
CodeCaptain20 天前
nacos-2.3.2-OEM与nacos3.1.x的差异分析
java·经验分享·nacos·springcloud
Dragon Wu20 天前
Spring Security Oauth2.1 授权码模式实现前后端分离的方案
java·spring boot·后端·spring cloud·springboot·springcloud
七夜zippoe22 天前
分布式配置中心终极对决 Spring Cloud Config与Apollo架构深度解析
分布式·架构·springcloud·apollo·配置中心
没有bug.的程序员24 天前
Spring Cloud Alibaba:Nacos 配置中心与服务发现的工业级深度实战
java·spring boot·nacos·服务发现·springcloud·配置中心·alibaba
短剑重铸之日1 个月前
《SpringCloud实用版》Stream + RocketMQ 实现可靠消息 & 事务消息
后端·rocketmq·springcloud·消息中间件·事务消息