SpringCloud Alibaba Sentinel规则持久化实践总结

默认情况下,一旦我们重启应用,sentinel规则将消失,生产环境需要将配置规则进行持久化。这里我们实践将Sentinel持久化到Nacos中。

① pom依赖

我们引入sentinel-datasource-nacos:

xml 复制代码
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 持久化用到 -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

② yml配置

yml 复制代码
server:
  port: 8401

spring:
  application:
    name: cloud-alibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        # 服务注册中心地址
        server-addr: localhost:8848
    sentinel:
      transport:
        # 配置sentinel dashboard地址
        dashboard: localhost:8080
        # 默认 8719端口,假如被占用从8719开始+1扫描直到直到未被占用的端口
        port: 8719
      datasource: # 规则持久化
        ds1:
          nacos:
            server-addr: localhost:8848 #nacos地址
            dataId: cloud-alibaba-sentinel-service  #微服务名称
            groupId: DEFAULT_GROUP  #默认分组
            data-type: json #数据格式
            rule-type: flow #流控规则
management:
  endpoints:
    web:
      exposure:
        include: '*'

③ Nacos添加配置

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

其实就是Sentinel控制台如下配置:

④ 测试

从Sentinel控制台删除规则,停掉服务实例8401,此时再刷新Sentinel控制台,规则是空的。

在将规则配置进Nacos后,启动8401,刷新Sentinel控制台,规则仍旧是空的。

浏览器访问 http://localhost:8401/rateLimit/byUrl ,刷新Sentinel控制台,规则出现:

(这里要稍等一会)多次请求访问 http://localhost:8401/rateLimit/byUrl ,出现流控管控情况:

相关推荐
code_slave(码畜)13 小时前
微服务架构落地:OpenFeign 服务远程调用 + 线程池隔离架构实战 —— 超时控制、重试机制、线程池隔离,防雪崩
spring boot·spring cloud·微服务·云原生·架构·openfeign
Thomas.Sir16 小时前
第30课:分布式事务解决方案 & Seata最终一致性实战
分布式·spring cloud·seata
霸道流氓气质1 天前
Serverless 架构入门与实战:FaaS/BaaS 模型、Spring Cloud Function 适配与 AI 推理冷启动优化的 Java 全栈指南
spring cloud·架构·serverless
SL_staff1 天前
低代码选型避坑指南:为什么‘能拖拽’不等于‘能交付’?——基于JVS八大引擎的四维交付能力评估框架
java·低代码·spring cloud
从零到一未来可期2 天前
第8集:MCP协议:一个协议让AI接入所有企业系统
spring·spring cloud
Thomas.Sir2 天前
第28课:统一日志收集、ELK搭建 & 线上问题排查体系
elk·spring cloud
来福猿3 天前
Nacos 源码解析:服务注册、配置中心与心跳续约机制
spring·spring cloud
Thomas.Sir3 天前
第27课:SkyWalking全链路追踪实战 & 微服务调用链路分析
spring cloud·微服务·skywalking
野生技术架构师3 天前
Dubbo 还是 Spring Cloud?从架构本质到落地选型
spring cloud·架构·dubbo
Wang's Blog3 天前
Java 项目实战: 交友项目 - 前后端分离的工程实践
java·spring cloud·架构