当前位置: 代码迷 >> 综合 >> SpringCloudAlibaba-Sentinel持久化
  详细解决方案

SpringCloudAlibaba-Sentinel持久化

热度:44   发布时间:2023-12-12 11:33:40.0

一、概述

之前配置的Sentinel限流,熔断策略,默认情况下Sentinel的数据是基于内存存储,当客户端断开,或者Sentinel重启数据就会丢失,正常使用是不可能重启一次服务就去重新配置一次策略,需要Sentinel做数据持久, Sentinel 中支持5种持久化的方式:file、redis、nacos、zk和apollo。

二、Nacos持久化

一.POM依赖

   <!--SentinelNacos做持久的--><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>

二.配置文件

spring:application:name: cloudalibaba-sentinel-feign-servicecloud:nacos:discovery:server-addr: 119.91.99.85:8849sentinel:transport:dashboard: localhost:8080 #配置Sentinel dashboard地址port: 8719 #应用与Sentinel控制台交互的端口datasource:ds1:nacos: #nacos限流持久配置server-addr: 119.91.99.85:8849 #nacos地址dataId: ${
    spring.application.name}  #获取限流的数据源的dataIdgroupId: DEFAULT_GROUP #获取限流的数据源的分组data-type: json #数据类型rule-type: flow #规则类型
# 激活sentinel对openfeign的支持
feign:sentinel:enabled: true

1、RuleType规则类型

指数据源中的规则类型

1.FLOW(流控规则)

限流规则

2.DEGRADE(熔断规则)

熔断降级规则

3.PARAM_FLOW(热点规则)

热词限流规则

4.SYSTEM(系统规则)

系统规则

5.AUTHORITY(授权规则)

6.GW_FLOW(网关集群流控规则)

7.GW_API_GROUP

这个是啥我没太理解

2、DataType数据类型

sentinel默认是json,使用xml还得导入其他的包,就用json吧。

三.nacos配置持久化数据

1、简单案例

1.服务端代码

   // 限流,参数和返回值与源方法一致public User exceptionHandler(@PathVariable Long id, BlockException ex) {
    ex.printStackTrace();System.out.println("服务限流");return new User(-1L, "限流了", "限流了");}// 熔断public User getByIdfallback(@PathVariable Long id) {
    System.out.println("熔断降级");return new User(id, "zs:" + id, "熔断托底了");}@GetMapping("/user/{id}")//限流降级//@SentinelResource(value="user",blockHandler="exceptionHandler")@SentinelResource(value = "user", blockHandler = "exceptionHandler", fallback = "getByIdfallback")public User getById(@PathVariable Long id) {
    int i = (int) (1 / id);    //方法异常,触发熔断User u = new User(id, "zs:" + id, "我是zs");System.out.println(u.toString());return u;}

2.nacos配置

[{
    "resource": "user","limitApp": "default","grade": 1,"count": 4,"strategy": 0,"controlBehavior": 0,"clusterMode": false}
]

3.测试

重新启动服务之后,就会看到
在这里插入图片描述

2、参数说明

1.resource

资源名,即限流规则的作用对象

2.limitApp

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

3.grade

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

4.count

限流阈值

5.strategy

调用关系限流策略

6.controlBehavior

流量控制效果(0直接拒绝、1Warm Up、2匀速排队)

7.clusterMode

是否为集群模式

  相关解决方案