springcloud3 Sentinel的搭建以及案例操作

news2025/1/11 11:15:50

一 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.查看效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于nodejs+vue的留学服务管理平台的设计与开发

目 录 摘 要 I Abstract I 第一章 绪论 1 1.1系统开发的背景 1 1.2系统开发的意义 1 1.3本文研究内容 2 第二章 系统开发技术 3 第三章 系统分析 6 3.1用户需求分析 6 3.1.1 老师用户 6 3.1.2 学生用户 6 3.1.3 管理员用户 6 3.2 系统…

6--总线

文章目录一.总线概述&#xff08;一&#xff09;总线特性&#xff08;二&#xff09;总线分类1.按功能分/按连接的部件分&#xff08;1&#xff09;片内总线/CPU内部总线&#xff08;2&#xff09;系统总线&#xff08;3&#xff09;通信总线/外部总线2.按数据传输格式分&#…

7、关系运算符与关系表达式

目录 一、关系运算符 二、关系表达式 三、优先级与结合性 一、关系运算符 关系运算符包括大于、大于等于、小于、小于等于、等于和不等于 注意&#xff1a;符号“>”&#xff08;大于等于&#xff09;与“<”&#xff08;小于等于&#xff09;的意思分别是大于或等于…

向QAbstractItemView子类如:QTreeView、QTableView等子项单元格插入窗体小部件的功能实现(第3种方法)

1.前言工作中经常会遇到这样的需求&#xff1a;向QAbstractItemView子类如QTreeView、QTableView单元格插入窗体小部件&#xff0c;如&#xff1a;进度条、按钮、单行编辑框等。下面链接的系列博文就是讲解如何实现该功能的。《向QAbstractItemView子类如:QTreeView、QTableVie…

Java 23种设计模式(9.结构型模式-外观模式)

结构型模式-外观模式 代码详解 类图 代码 public class SubOne {public void method1(){System.out.println("method1");} }public class SubTwo {public void method2(){System.out.println("method2");} }public class SubThree {public void method3(…

VSCode配置C/C++环境

(1).配置编译器 接下来配置编译器路径&#xff0c;按快捷键CtrlShiftP调出命令面板&#xff0c;输入C/C&#xff0c;选择“Edit Configurations(UI)”进入配置。这里配置两个选项&#xff1a; - 编译器路径&#xff1a;D:/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64…

3D创作元素将入住下一代Windows 10和HoloLens中

新 Windows 10 将会带来崭新的 3D 特性&#xff0c;任何用户都可以通过内置的工具来制作发布有关「3D、增强现实 AR 和混合现实 (mixed reality) 的游戏和素材」。 北京时间 10 月 26 号晚 10 点&#xff0c;微软在纽约召开的新品发布会如期而至。会上微软发布了大家期待已久的…

【Linux】进程的概念 | 进程控制块 PCB | task_struct

&#x1f923; 爆笑教程 &#x1f449; 《看表情包学Linux》&#x1f448; 猛戳订阅 &#x1f525; &#x1f4ad; 写在前面&#xff1a;本章我们将带着大家深入理解 "进程" 的概念&#xff0c;"进程" 这个概念其实使我们一直在接触的东西&#xff0c;只不…

浅谈操作系统

操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境&#xff0c;操作系统可以分为桌面操作系统&#xff0c;手机操作系统&#xff0c;服务器操作系统&#xff0c;嵌入式操作系统等。 通俗来…

Three.js坐标系与变换矩阵快速入门

很多东西汇集在一起构成一个美丽的 3D 场景&#xff0c;例如光照、材质、模型、纹理、相机设置、后期处理、粒子效果、交互性等等&#xff0c;但无论我们创建什么样的场景&#xff0c;没有比这更多的了 比组成它的乐曲的排列和运动更重要。 要创建建筑效果图&#xff0c;我们必…

CDH数仓项目(一) —— CDH安装部署搭建详细流程

0 说明 本文以CDH搭建数据仓库&#xff0c;基于三台阿里云服务器从零开始搭建CDH集群&#xff0c;节点配置信息如下&#xff1a; 节点内存安装服务角色chen10216Gcloudera-scm-serverchen1038Gcloudera-scm-agentchen1048Gcloudera-scm-agent 上传需要用到的安装包&#xff1…

[NPUCTF2020]ezinclude

目录 前提知识 信息收集 解题思路 前提知识 PHP LFI 利用临时文件 Getshell 姿势-安全客 - 安全资讯平台 PHP LFI 利用临时文件Get shell php7 Segment Fault&#xff08;7.0.0 < PHP Version < 7.0.28&#xff09; PHPINFO特性 信息收集 查看源码 <!--md5($secr…

【进阶】Spring MVC程序开发

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录一、Spring MVC概述1. MVC定义2. MVC和Spring MVC的关系二、为什么要学Spring MVC三、如何学Spring MVC一&#xff09; 实现用户和程序的映射方法1&#xff1a;路由RequestMapping(“/xxx”)方法2&#xff1a; 使用P…

Python纯手动搭建BP神经网络(手写数字识别)

来源&#xff1a;投稿 作者&#xff1a;张宇 编辑&#xff1a;学姐 实验介绍 实验要求&#xff1a; 实现一个手写数字识别程序&#xff0c;如下图所示&#xff0c;要求神经网络包含一个隐层&#xff0c;隐层的神经元个数为15。 整体思路&#xff1a; 主要参考西瓜书第五章神…

一款超赞的算法可视化工具,让算法过程动态展示出来

从文字或者图片中学习算法还是一件很无聊的事。当然&#xff0c;现在有许多很棒的网站可以查看各种算法的动画。然而&#xff0c;对于开发人员来说&#xff0c;如果能将实现算法的代码的实际执行操作通过可视化展现出来&#xff0c;那就是最好不过了。推荐一款开源工具&#xf…

深度学习——编码器

1.复习CNN 在CNN中&#xff0c;输入一张图片&#xff0c;经过多层的卷积层&#xff0c;最后输出层判别图片中的物体的类别。 CNN使用卷积层做特征提取&#xff08;编码&#xff09;&#xff0c;使用Softmax回归做预测&#xff08;解码&#xff09; ①编码器&#xff1a;将输入…

ArrayList扩容机制~

ArrayList()//会使用长度为零的数组 ArrayList(int initialCapacity)//会使用指定容量的数组 public ArrayList(Collection<?extends E>c>//会使用c的大小作为数组容量假设我们设置一个列表的最初容量为10&#xff0c;如下所示&#xff1a; ArrayList<Integer>…

【Python从入门到进阶】5、变量的定义及数据类型

接上篇《4、pycharm的安装及使用》 上一篇我们学习了python编程工具pycharm的安装及基本使用。后续篇章我们正式来学习Python语言的语法和特性&#xff0c;本篇我们主要学习Python变量的定义及数据类型。 一、注释 1、注释介绍 在工作编码的过程中&#xff0c;如果一段代码的…

(深度学习快速入门)第三章第三节4:深度学习必备组件之TensorBoard和标准化技术

文章目录一&#xff1a;TensorBoard&#xff08;1&#xff09;TensorBoard介绍&#xff08;2&#xff09;Pytorch安装TensorBoard&#xff08;3&#xff09;TensorBoard使用&#xff08;4&#xff09;服务器tensorboard本地显示&#xff08;5&#xff09;AutoDL等算力平台tenso…

07技术太卷我学APEX-动态菜单+URL传参数给页面

07技术太卷我学APEX-动态菜单URL传参数给页面 0 应用场景 《技术太卷我学APEX》收集的项目越来越多&#xff0c;我想把【类】【子类】加到导航菜单栏&#xff0c;点击不同的分类菜单栏&#xff0c;对列表进行过滤&#xff0c;也可以全部浏览&#xff0c;如下图&#xff1a; …