SpringCloudAlibaba-Sentinel持久化

一、概述

之前配置的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-service
  cloud:
    nacos:
      discovery:
        server-addr: 119.91.99.85:8849
    sentinel:
      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}  #获取限流的数据源的dataId
            groupId: 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

是否为集群模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值