栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloudAlibaba-Sentinel持久化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloudAlibaba-Sentinel持久化

一、概述

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

二、Nacos持久化 一.POM依赖
   
    
        com.alibaba.csp
        sentinel-datasource-nacos
     
二.配置文件
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

是否为集群模式

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/305836.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号