springcloud3 Sentinel的搭建及案例操作方法

 更新时间:2023年01月28日 14:39:36   作者:健康平安的活着  
Sentinel是分布式系统流量控制的哨兵,阿里开源的一套服务容错的综合性解决方案,这篇文章主要介绍了springcloud3 Sentinel的搭建以及案例操作,需要的朋友可以参考下

一 sentinel的概念

1.1 sentinel

Sentinel是分布式系统流量控制的哨兵,阿里开源的一套服务容错的综合性解决方案。

主要用来处理:

服务降级

服务熔断

超时处理

流量控制

sentinel 的使用可以分为两个部分:

核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。

控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。基于 Spring Boot 开发,打包后可以直接运行。

二 sentinel的安装

2.1 sentinel的安装

中文文档:

quick-start | Sentinel

程序包下载:

Releases · alibaba/Sentinel · GitHub

启动jar包

F:\>java -jar sentinel-dashboard-1.7.2.jar

页面访问: sentinel /  sentinel

输入地址: http://localhost:8080/

三   sentinel的各种用途

3.1 实时监控

3.1.1 架构图

3.1.2 sentinel消费项目

1.pom

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
      <scope>test</scope>
    </dependency>
    <!--SpringCloud ailibaba nacos -->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      <version>2021.1</version>
    </dependency>
    <!--SpringCloud ailibaba sentinel-datasource-nacos 后续做持久化用到-->
    <dependency>
      <groupId>com.alibaba.csp</groupId>
      <artifactId>sentinel-datasource-nacos</artifactId>
      <version>1.5.2</version>
    </dependency>
    <!--SpringCloud ailibaba sentinel -->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
      <version>2021.1</version>
    </dependency>
    <!--openfeign-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <!-- SpringBoot整合Web组件+actuator -->
    <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>
    <!--日常通用jar包配置-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>4.6.3</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

2.application配置文件

server:
  port: 7005
 
spring:
  application:
    name: mscloud-sentinel-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
    sentinel:
      transport:
        dashboard: localhost:8080 #配置Sentinel dashboard地址
        port: 8719
 
management:
  endpoints:
    web:
      exposure:
        include: '*'

3.业务类

@RestController
@Slf4j
public class DataLimitController {
        @GetMapping("/testA")
        public String testA()
        {
            return "------testA";
        }
 
        @GetMapping("/testB")
        public String testB()
        {
            log.info(Thread.currentThread().getName()+"\t"+"...testB");
            return "------testB";
        }
}

4.启动类

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

3.1.3 操作

1.启动nacos

2.启动sentinel服务

 3.启动sentinel消费服务

 3.1.4 进行监控访问

访问地址: http://localhost:7005/testA      多次刷新访问几次

 2.查看监控

访问地址: http://localhost:7005/testB      多次刷新访问几次

3.2 流量控制

3.2.1 qps+阈值进行限流

1.查看资源,针对资源进行流控

 2.设置配置

1秒钟qps的阈值为3,一秒钟请求大于3,则容错提示。

 联系请求大于3次,则 给出如下提示:

 3.2.2 线程数+阈值进行限流

当线程数达到阈值后,进行限流提示。

1.设置

2.访问验证

 3.2.3 线程数+阈值+关联进行限流

1.通过资源A关联的资源B,资源B发生qps超过规定的阈值,则导致资源A进行限流提示。

2.设置

 3.postman定时这是

4.查看访问资源A:http://localhost:7005/testA

 3.2.4 线程数+阈值+关联+预热进行限流

1.说明:

默认的colorfactor为3,QPS是从(threshold/3)开始,即

系统初始化的阈值为:12/3约等于4,,即阈值初始化为4,经过5秒后阈值才升到设定的12.

2.配置

3.访问

前5秒,不停刷新会提示限流信息,

 5秒过后,不停刷新(手工不停刷新达不到设定的阈值12),所以不再限流

 3.2.5 线程数+阈值+排队等待进行限流

1.说明

匀速排队:让请求以均匀的速度通过,阈值类型必须设置成QPS,否则无效。

设置含义:/testB 每秒3次请求,超过阈值后就进行排队,等待大于20秒则满足超时时间,进行请求。

2.配置

 3.查看效果

到此这篇关于springcloud3 Sentinel的搭建以及案例操作的文章就介绍到这了,更多相关springcloud3 Sentinel搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis某些字段无法映射成功的解决

    mybatis某些字段无法映射成功的解决

    这篇文章主要介绍了mybatis某些字段无法映射成功的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • java实现大文件导出的实现与优化

    java实现大文件导出的实现与优化

    这篇文章主要为大家详细介绍了java实现大文件导出的实现与优化的相关资料,文中的示例代码讲解详细,对我们深入了解java有一定的帮助,感兴趣的小伙伴可以了解下
    2023-11-11
  • Java中浅拷贝与深拷贝实例解析

    Java中浅拷贝与深拷贝实例解析

    这篇文章主要给大家介绍了关于Java中浅拷贝与深拷贝的相关资料,拷贝对象是java中经常会遇到的问题,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • Java导出网页表格Excel过程详解

    Java导出网页表格Excel过程详解

    这篇文章主要介绍了Java导出网页表格Excel过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • springboot2.1.3配置sftp自定义sftp连接池的详细过程

    springboot2.1.3配置sftp自定义sftp连接池的详细过程

    这篇文章主要介绍了springboot2.1.3配置sftp自定义sftp连接池的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • 全面解析java中的hashtable

    全面解析java中的hashtable

    以下是对java中的hashtable进行了详细的分析介绍。需要的朋友可以过来参考下
    2013-08-08
  • SpringBoot JS-SDK自定义微信分享的实现

    SpringBoot JS-SDK自定义微信分享的实现

    这篇文章主要介绍了SpringBoot JS-SDK自定义微信分享的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 基于Java将Excel科学计数法解析成数字

    基于Java将Excel科学计数法解析成数字

    这篇文章主要介绍了基于Java将Excel科学计数法解析成数字,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 详解spring面向切面aop拦截器

    详解spring面向切面aop拦截器

    spring中有很多概念和名词,比如过滤器、拦截器、aop等。这篇文章主要介绍了详解spring面向切面aop拦截器,有兴趣的可以了解一下。
    2017-03-03
  • mybatis-plus之如何实现in嵌套sql

    mybatis-plus之如何实现in嵌套sql

    这篇文章主要介绍了mybatis-plus之如何实现in嵌套sql问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论