首页 > 其他分享 >SpringCloud Alibaba-03 Sentinel服务熔断与限流

SpringCloud Alibaba-03 Sentinel服务熔断与限流

时间:2024-10-24 20:18:55浏览次数:3  
标签:03 SpringCloud boot 限流 spring Sentinel 8719 public cloud

与CircuitBreaker功能类似
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后台默认8719端口
前台默认8080端口

在jar包所在目录下打开CMD,执行 java -jar sentinel-dashboard-1.8.6.jar 命令即可
在这里插入图片描述
网址http://localhost:8080 账号密码都是sentinel
在这里插入图片描述
1.Sentinel微服务8401纳入Sentinel监控
1.1 建Module,改pom

    <dependencies>
        <!--SpringCloud alibaba sentinel -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- 引入自己定义的api通用包 -->
        <dependency>
            <groupId>com.dc.cloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--SpringBoot通用依赖模块-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--hutool-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.28</version>
            <scope>provided</scope>
        </dependency>
        <!--test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

1.2 改yml

server:
  port: 8401

spring:
  application:
    name: cloudalibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848         #Nacos服务注册中心地址
    sentinel:
      transport:
        dashboard: localhost:8080 #配置Sentinel dashboard控制台服务地址
        port: 8719 #默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口

1.3 主启动

@EnableDiscoveryClient
@SpringBootApplication
public class Main8401
{
    public static void main(String[] args)
    {
        SpringApplication.run(Main8401.class,args);
    }
}

1.4 业务类

@RestController
public class FlowLimitController
{

    @GetMapping("/testA")
    public String testA()
    {
        return "------testA";
    }

    @GetMapping("/testB")
    public String testB()
    {
        return "------testB";
    }
}

在这里插入图片描述
在这里插入图片描述

2.Sentinel流控规则
在这里插入图片描述
2.1 流控模式
在这里插入图片描述
2.1.1 直接
1秒钟支持2次访问
在这里插入图片描述
超过两次
在这里插入图片描述
2.1.2 关联
B超过1秒钟1次,限流A
在这里插入图片描述
jmeter模拟高并发访问testB (在jmeter的bin目录下双击jmeter.bat即可启动)
在这里插入图片描述
4秒后testA才能访问

2.1.3 链路
新建FlowLimitService类

@Service
public class FlowLimitService
{
    @SentinelResource(value = "common")
    public void common()
    {
        System.out.println("------FlowLimitService come in");
    }
}

controller地哦啊用service

    /**流控-链路演示demo
     * C和D两个请求都访问flowLimitService.common()方法,阈值到达后对C限流,对D不管
     */
    @Resource
    private FlowLimitService flowLimitService;

    @GetMapping("/testC")
    public String testC()
    {
        flowLimitService.common();
        return "------testC";
    }
    @GetMapping("/testD")
    public String testD()
    {
        flowLimitService.common();
        return "------testD";
    }

修改yml

    sentinel:
      transport:
        dashboard: localhost:8080 #配置Sentinel dashboard控制台服务地址
        port: 8719 #默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口
    web-context-unify: false # controller层的方法对service层调用不认为是同一个根链路

testC进行限流(不超过1秒1次),testD不受影响
在这里插入图片描述
在这里插入图片描述

2.2 流控效果
在这里插入图片描述
2.2.1 快速失败

2.2.2 Warm Up 预热
刚开始每秒钟(10/3约等于3)3次请求,5秒后每秒钟10次请求
在这里插入图片描述
2.2.3 排队等待
在这里插入图片描述
1秒允许一个通过,超过10秒还未响应的进行超时处理,放弃
在这里插入图片描述
2.3 并发线程数
在这里插入图片描述
在这里插入图片描述

标签:03,SpringCloud,boot,限流,spring,Sentinel,8719,public,cloud
From: https://blog.csdn.net/qq_53568730/article/details/143122405

相关文章

  • 20222403 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    1.实验内容1.1.实践内容(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件veil,加壳工具使用C+shellcode编程(2)通过组合应用各种技术实现恶意代码免杀如果成功实现了免杀的,简单语言描述原......
  • 【Azure Function】Python Function部署到Azure后报错No module named '_cffi_backend
    问题描述本地使用Python编写的FunctionApp,发布到AzureFunction后,出现 _cffi_backendmodule无法找到的报错。ERROR:Error:Nomodulenamed'_cffi_backend',Cannotfindmodule.Pleasechecktherequirements.txtfileforthemissingmodule.Formoreinfo,plea......
  • JavaFX+JavaCV实现批量视频处理及批量生成视频开发笔记--003,批量视频混剪功能设计与代
    我要使用JavaFX+JavaCV实现一个桌面应用,可以打包成Windows和Mac的桌面应用。实现的功能是:批量视频混剪。具体操作是:在界面上选择一个文件夹或多个视频文件,对文件夹中的所有视频文件(仅.mp4格式)或者选中的文件进行处理,随机截取原视频中指定长度的视频片段(如5秒),拼接成多个新的......
  • TruneNAS导入池时出错[ libzfs.ZFSException: ('IO error',) ]
    简述:某天TrueNAS无故宕机,经检查服务器内存检测失败(32G只识别了16G),除灰,重插内存,系统启动成功,登录后池error,手动导入报错。问题借图,本地报错与该图一致,导入池错误代码参考代码块错误:concurrent.futures.process._RemoteTraceback:"""Traceback(mostrecentcalllast)......
  • 2003-2023年 投资者情绪指数ISI以及CICSI数据
    ISI是一种量化工具,它通过一系列指标来衡量市场参与者的情绪。这些指标包括但不限于市场交易量、IPO首日收益率、新增投资者开户数等。ISI的设计旨在捕捉投资者的过度乐观或悲观情绪,从而揭示市场估值的潜在偏差。2003-2023年投资者情绪指数ISI以及CICSI数据().zip资源-CSDN文库ht......
  • 强化学习的数学原理-03贝尔曼最优公式
    目录最优策略和公式推导右侧最优化问题公式求解以及最优性Contractionmappingtheorem(压缩映射定理)解决贝尔曼最优公式分析最优策略(analyzingoptimalpolicies)Summary最优策略和公式推导首先定义一个策略比另一个策略好:\[v_{\pi_{1}}(s)\gev_{\pi_{2}}(s)\quadfor\qua......
  • 报error:0308010C:digital envelope routines::unsupported错--nodejs版本过高(nvm安
    最近小编入职实习,运行(npmrundev)前端项目时报error:0308010C:digitalenveloperoutines::unsupported的错,一查发现原来是nodejs版本过高,与项目不匹配。接下来介绍更换nodejs版本的方法。第一种:官网下载通过nodejs官网下载安装,但有个缺陷,不同版本的nodejs无法顺利的切换......
  • Springcloud家政服务系统-计算机设计毕业源码87907
    目 录摘要1绪论1.1研究背景1.2 研究意义1.3论文结构与章节安排2 系统分析2.1可行性分析2.2系统流程分析2.2.1数据新增流程2.2.2数据修改流程2.2.3数据删除流程2.3 系统功能分析2.3.1功能性分析2.3.1非功能性分析62.4 系统用例分......
  • Springcloud家政服务系统-计算机设计毕业源码87907
    目 录摘要1绪论1.1研究背景1.2 研究意义1.3论文结构与章节安排2 系统分析2.1可行性分析2.2系统流程分析2.2.1数据新增流程2.2.2数据修改流程2.2.3数据删除流程2.3 系统功能分析2.3.1功能性分析2.3.1非功能性分析62.4 系统用例分......
  • Java基础day03---循环,数组,杨辉三角
    Java基础day03接day02----流程控制---3、循环一、循环循环语法结构执行逻辑通用for循环for(初始化;条件判断;步长设置){//循环体}第一次循环:初始化,条件判断,循环体,步长设置;第2-n次循环:条件判断,循环体,while循环while(判断条件){//循环体}先条件判断再执行循环体do.............