Sentinel入门与进阶:微服务流量控制的最佳实践 ( 三 )

5.配置持久化

目前的sentinel,无法满足我们生产环境的需求,因为一旦sentinel-dashboard发生重启,限流规则也会随之丢失。

sentinel规则的持久化: Sentinel自身就支持了多种不同的数据源来持久化规则配置,比如文件配置,Nacos配置,Zookeeper配置等。

接下来我们讨论一下,如何使用Nacos来实现规则的持久化配置。

5.1.在 pom.xml 中加入依赖

xml 复制代码
        <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-sentinel</artifactId>
        </dependency>       

		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-sentinel-datasource</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>

nacos 2.3.2 与 sentinel 1.8.8 版本

5.2.在nacos的配置中心加入配置

注意类型为 JSON

public 命名空间下加入

sca-sentinel-dashboard-sentinel-flow

json 复制代码
[
    {
        "resource": "/sentinelTest/sayHello",
        "limitApp": "default",
        "grade": 1,
        "count": 3
    }
]

Data Id :和配置中的data_id相对应

Group:配置文件中的group-id

配置内容:

resource:接口名,即限流规则的作用对象

limitApp:流控针对的调用来源,若为 default 则不区分调用来源

grade:限流阈值类型(QPS 或并发线程数);0代表根据并发数量来限流,1代表根据QPS来进行流量控制

count:限流阈值

strategy:调用关系限流策略

controlBehavior:流量控制效果(直接拒绝、Warm Up、匀速排队)

clusterMode:是否为集群模式

5.3.修改项目配置

在 application.properties 中加入

ds-flow 可以自己定义

properties 复制代码
spring.cloud.sentinel.datasource.ds-flow.nacos.server-addr=127.0.0.1:8848
spring.cloud.sentinel.datasource.ds-flow.nacos.data-id=${spring.application.name}-sentinel-flow
spring.cloud.sentinel.datasource.ds-flow.nacos.group-id=DEFAULT_GROUP
spring.cloud.sentinel.datasource.ds-flow.nacos.rule-type=flow
spring.cloud.sentinel.datasource.ds-flow.nacos.data-type=json
spring.cloud.sentinel.datasource.ds-flow.nacos.username=nacos
spring.cloud.sentinel.datasource.ds-flow.nacos.password=nacos
spring.cloud.sentinel.datasource.ds-flow.nacos.namespace=DEFAULT_GROUP

5.4.查看Sentinel 流控规则

相关推荐
wdyan2974 小时前
带着小白学习-微服务-5 实战:配置中心-数据库连接
数据库·学习·微服务
胡写代码1 天前
把数据库连接搬进配置中心,服务起不来:spring.config.import 的 4 个必填项
spring cloud·微服务
利威尔xu4 天前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
利威尔xu4 天前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
-星空下无敌4 天前
Windows Docker K8s 安装部署Naocs ,SpringBoot 3.x 4.x 整合Naocs 版本兼容 配置中心、服务注册与发现
windows·docker·nacos·kubernetes·springboot·alibaba
骑着蜗牛撵大象3274 天前
Spring Boot 4.1 + Spring AI 2.0:RAG 供文、图谱供关系、MCP 供工具的 Java Agent 平台
java·spring boot·spring·微服务·知识图谱·rag·mcp
code_slave(码畜)4 天前
微服务架构落地:慢 SQL 治理与连接池调优 —— 守住数据库的最后一道防线
数据库·spring boot·sql·spring cloud·微服务·架构
微三云 - 廖会灵 (私域系统开发)6 天前
企业级 SaaS 系统架构设计:单体、微服务还是模块化单体?技术选型实战
微服务·架构·系统架构
shuair6 天前
Spring Cloud 微服务脚手架:Simple Cloud 系统架构设计
spring cloud·微服务·系统架构
CodeGL6 天前
微服务框架——go-zero
微服务·架构·golang