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 流控规则

相关推荐
想你依然心痛13 小时前
AtomCode在后端开发中的实战体验:Go微服务从零搭建
开发语言·微服务·golang
nbsaas-boot16 小时前
微服务架构下的分布式事务解决方案深度对比与实战选型
分布式·微服务·架构
小二·1 天前
Docker+K8s生产级部署实战:从0到1打造高可用微服务集群
docker·微服务·kubernetes
fanly115 天前
Surging AI Agent 完整产品介绍
微服务·microservice
蝎子莱莱爱打怪12 天前
XZLL-IM干货系列 04|Netty 长连接实战:Pipeline 怎么排、心跳怎么跳、连接怎么管
后端·微服务·面试
SamDeepThinking13 天前
Java微服务练习方式
java·后端·微服务
米丘16 天前
微前端之 Web Components 完全指南
微服务·html
霸道流氓气质18 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
霸道流氓气质19 天前
Spring Boot 微服务性能优化完全指南
spring boot·微服务·性能优化
地瓜伯伯19 天前
从MESI缓存一致性协议讲透synchronized的底层
java·spring boot·spring·spring cloud·微服务·springcloud