微服务09-Sentinel的入门

文章目录

  • 微服务中的雪崩现象
    • 解决办法:
    • 1. 超时处理
    • 2. 舱壁模式
    • 3. 熔断降级
    • 4.流量控制
  • Sentinel
    • 1.介绍
    • 2.使用操作
    • 3.限流规则
    • 4.实战:流量监控
    • 5.高级选项功能的使用
    • 1.关联模式
    • 2.链路模式
    • 3.总结
  • 流控效果
    • 1.预热模式
    • 2.排队等待模式
    • 3.总结
    • 4.热点参数限流
    • 5.实战

微服务中的雪崩现象

首先,我们介绍一下微服务中雪崩现象:因为微服务中服务是互相调用的,错综复杂,当一个服务D出现问题时,那么调用D的服务请求就会失败,当请求累积到一定的量时,请求D的服务也会出问题——>(因为我们内置的tomcat连接数是有限制的,如果一直请求那个失败的服务,当请求达到一定的数量),服务A也会炸掉,从而引起整个链路服务不可用;

在这里插入图片描述

解决办法:

1. 超时处理

我们可以设置超时时间,超过了就会返回错误信息,释放tomcat资源

劣势:起到了缓解雪崩问题,当服务请求的时间比超时时间短,假设1s内多个请求,而你超时时间是1s,那么还是会出现雪崩

在这里插入图片描述

2. 舱壁模式

将每个业务隔离开(有一个线程池),限定每个业务能够使用的线程数,就算这个服务挂了,也就损失这一部分的线程,从而避免了损失整个tomcat资源——>也就是线程隔离

在这里插入图片描述

3. 熔断降级

根据异常请求的比例,比如说你异常请求达到了1/2,超过了这个阈值就会熔断该业务,拒绝一切请求访问该业务

在这里插入图片描述

4.流量控制

首先我们了解一下QPS——>每秒能够处理的请求数;流量控制——>限制服务访问的QPS,避免服务因为流量突然增大而挂掉;

它是一种预防的功能,给大量请求进行限流,以一定数量请求进行访问

在这里插入图片描述

Sentinel

1.介绍

首先我们来说一下信号量隔离和线程池隔离之间的区别:

信号量隔离:用的还是tomcat池子,只是我们每一个业务都被限定了能够用多少个线程去访问,当请求数超过这个限定的数量时,就会拒绝访问了——>也就是说它会限制每个业务能使用的线程数量

好处:不用创建线程池,节省资源,轻量级;

坏处:隔离性较差,相当于吃大锅饭,每个规定了盛多少饭;

线程池隔离:就跟我们上面的舱壁模式一样,每个业务分配一个线程池,线程池里面限定了一定的线程数,起到了隔离作用,当服务挂了也就浪费这个池子

好处:隔离性好,方便控制,可以异步调用,毕竟每个服务都有线程池,我们请求给到线程池中处理,用户就可以干自己的事情了;

坏处:浪费了资源;

控制台

Sentinel支持开箱即用,那些第三方配置都可以直接用,比如:查看监控,配置规则等等

熔断降级策略:

除了根据失败的请求比例来判断是否熔断,是否拒绝其他的请求请求该业务之外;还可以根据请求服务的时间来进行熔断降级——>因为请求服务时间可能太长了,拖垮我们的服务,我们进行熔断;

限流

可以让突发的流量平稳运行——>进行一种流量控制,支持慢启动和匀速排队模式

在这里插入图片描述

在这里插入图片描述

2.使用操作

文件目录cmd打开小黑窗口然后运行代码

java -jar sentinel-dashboard-1.8.x.jar //启动sentinel

修改配置(启动有效)

java -jar sentinel-dashboard-1.8.x.jar -Dserver.port=8090//修改端口配置

在这里插入图片描述

然后我们后台启动服务,Sentinel进行监控

 cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址cluster-name: Hangzhou # 实例集群ephemeral: false  # 非临时实例sentinel:transport:dashboard: localhost:8080 #sentinel控制台版本
        <!--        sentinel依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>0.9.0.RELEASE</version></dependency>

在这里插入图片描述

3.限流规则

点击服务资源查看流量监控,就可以弹出表单,添加流控规则

在这里插入图片描述

这个单机阈值就是每秒能够请求的次数,资源名就是请求的资源

当超过单机阈值,就会报错;

4.实战:流量监控

在这里插入图片描述

点击流控设置流量控制

针对来源:意思就是从哪里来的,限流

QPS:每秒请求数量

在这里插入图片描述

我们要模拟1s超过5次请求,可以利用jmeter

发现限流成功

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

在这里插入图片描述

可以修改响应风格,看到响应失败

在这里插入图片描述

5.高级选项功能的使用

在这里插入图片描述

# 流控模式
流控模式强调的是对哪个资源进行限流

在这里插入图片描述

1.关联模式

场景:比如某个用户支付时候,需要修改订单状态,那么用户需要查询订单,查询和修改订单的操作会争抢数据库锁——>从而产生竞争;
业务需求是:有限支付和更新订单的业务,以此当修改订单业务触发阈值时,我们这里需要对查询订单业务限流;
在这里插入图片描述

当/write资源访问(修改订单)量触发阈值时,就会对/read资源限流,从而避免影响/write资源

那么我们的阈值就是对限流的资源(被关联的)使用;

当你访问query时发现被限流——>访问update次数过多,又因为update与query关联

在这里插入图片描述

2.链路模式

在这里插入图片描述

Sentinel默认只会标记Controller中的方法,如果要标记其他的需要@SentinelResource注解
在这里插入图片描述
在这里插入图片描述

谁优先级低就对谁的goods进行限流
阈值为 6
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

save是成功的
查看监控

在这里插入图片描述

3.总结

在这里插入图片描述

链路:是对资源的来源进行一个限流

关联:强调的是一个优先级,比如修改调用查询,触发阈值对查询限流

流控效果

流控效果强调的是对请求的处理,效果

在这里插入图片描述

1.预热模式

意思就是服务器一开始不会应对那么多的请求QPS,如果一下应对那么多,可能一上来就给打懵了,会有个预热——>防止一下高并发导致服务器宕机

在这里插入图片描述

在这里插入图片描述

2.排队等待模式

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

案例:给order/{id}限流,最大QPS为10,每s处理10个请求,利用排队的流量监控,超时时间设置为5s——>超过5s的请求直接拒绝

请求进入队列,按照阈值运行的时间间隔依次执行请求;如果请求预期等待时间>超时间就会拒绝,然后处理的请求资源放出来平稳
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.总结

在这里插入图片描述
各有各的好处:一个直接让你失败不让你久等,对用户体验比较好;warm up防止高并发导致的服务器宕机,相对更加安全;而排队等待的话能够使流量平稳运行,只有超过整个队列时长才会拒绝,更加综合一点;

4.热点参数限流

之前的的限流是统计访问某个资源的所有请求,判断是否超过QPS阈值,而判断是否拒绝;

而热点参数限流——>是根据参数值是否相同来判断拒绝

参数索引是第x个参数,判断含有这个参数的请求数是否超过QPS阈值

在这里插入图片描述

在这里插入图片描述

5.实战

给order/{id}进行热点参数限流

注意:热点参数限流对默认SPringMVC资源无效,只有通过@SentinelResource注解的才行

在这里插入图片描述

在这里插入图片描述
对我们设置@SentinelResource的控制器进行参数限流

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

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

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

相关文章

东芝Z750的画质真实吗?适合看纪录片吗?

东芝Z750显示的画面更加真实、细腻、有层次感,就感觉电视中的画面像真实世界一般呈现在眼前,东芝电视拥有70余年的原色调校技术,每款产品都有专属的日本调校工程师匠心打造,可以真实还原画面色彩,若是观看类似《航拍中国》这样的旅游记录片时,东芝电视将会营造出万里山河的壮阔…

OpenCV3-Python(7)模板匹配和霍夫检测

模板匹配 膜版匹配不能匹配尺度变换和视角变换的图像 图片中查找和模板相似度最高的图像 计算相似程度最高的位置 res cv.matchTemplate(img , template, method) 该方法返回一个类似灰度图的东西&#xff0c;如果用的相关匹配&#xff0c;那么亮的地方就是可能匹配上的地方 …

Svelte生命周期(加整体概述)

目录 前言 一、编译阶段 1. 导入语句 2. 组件声明 3. 模板部分 4. CSS样式 二、运行时阶段 三、生命周期函数 1. onMount 2. beforeUpdate 与 afterUpdate 3. onDestroy 4. setContext 与 getContext 6. hasContext 7. getAllContexts 前言 Svelte是一种现代的Ja…

聚观早报 | 首个“5G-A智慧家庭”发布;李鹏称5G-A是5G发展选择

【聚观365】10月12日消息 首个“5G-A智慧家庭”发布 李鹏称5G-A是5G发展的自然选择 新版努比亚Z50S Pro开售 英特尔锐炫A580显卡全球同步上市 vivo X100系列年底登场 首个“5G-A智慧家庭”发布 在全球移动宽带论坛&#xff08;MBBF2023&#xff09;期间&#xff0c;du联合…

04_学习springdoc与oauth结合_简述

文章目录 1 前言2 基本结构3 需要做的配置 简述4 需要做的配置 详述4.1 backend-api-gateway 的配置4.1.1 application.yml 4.2 backend-film 的配置4.2.1 pom.xml 引入依赖4.2.2 application.yml 的配置4.2.3 Spring Security 资源服务器的配置类 MyResourceServerConfig4.2.4…

vue打印功能

安装 vue3-print-nb yarn add vue3-print-nb //或 npm install vue3-print-nbmain.js中引入 vue3-print-nb import { createApp } from vue; import App from ./App.vue; const app createApp(App); // 打印插件 import print from vue3-print-nb app.use(print) //页面内引…

Webapck 解决:[webpack-cli] Error: Cannot find module ‘vue-loader/lib/plugin‘ 的问题

1、问题描述&#xff1a; 其一、报错为&#xff1a; [webpack-cli] Error: Cannot find module vue-loader/lib/plugin 中文为&#xff1a; [webpack-cli] 错误&#xff1a;找不到模块“vue-loader/lib/plugin” 其二、问题描述为&#xff1a; 在项目打包的时候 npm run …

c++视觉图像----扩充边界

图像扩充边界 #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp>int main() {// 读取图像cv::Mat image cv::imread("1.jpg", cv::IMREAD_COLOR);if (image.empty()) {std::cerr << "Could not open or find the imag…

Java项目调用Python脚本(基于idea)

前期准备 1.首先需要在本地环境中安装配置python环境 Python(含PyCharm及配置)下载安装以及简单使用(Idea) 博主本次使用python版本为py3.7.3 2.idea安装python插件 位置&#xff1a;File->Settings->Plugins->python->安装后重启即可 3.引入jython依赖 &l…

力扣 -- 1312. 让字符串成为回文串的最少插入次数

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int minInsertions(string s) {int ns.size();vector<vector<int>> dp(n,vector<int>(n));//无需初始化//填表for(int in-1;i>0;i--){for(int ji;j<n;j){//状态转移方程if(s[i]s[…

如何在 Spring Boot 中进行数据备份

在Spring Boot中进行数据备份 数据备份是确保数据安全性和可恢复性的关键任务之一。Spring Boot提供了多种方法来执行数据备份&#xff0c;无论是定期备份数据库&#xff0c;还是将数据导出到外部存储。本文将介绍在Spring Boot应用程序中进行数据备份的不同方法。 方法1: 使用…

【深度学习实验】循环神经网络(一):循环神经网络(RNN)模型的实现与梯度裁剪

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 数据处理 2. rnn 测试 3. grad_clipping 4. 代码整合 经验是智慧之父&#xff0c;记忆是智慧之母。 ——谚语 一、实验介绍 本实验介绍了一个简单的循环神经网络…

如何优化前端图像和多媒体资源?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

电子书制作软件Vellum mac中文版特点

Vellum mac是一款专业的电子书制作软件&#xff0c;它可以帮助用户将文本文件转换为高质量的电子书&#xff0c;支持多种格式&#xff0c;包括EPUB、MOBI、PDF等。Vellum具有直观的用户界面和易于使用的工具&#xff0c;可以让用户快速地创建和发布电子书。 Vellum mac软件特点…

与艺术同频!卡萨帝在海外崭露头角

在品牌全球化步伐日益加快的当下&#xff0c;高端品牌如何真正实现业务全球化、品牌全球化乃至用户圈层全球化&#xff1f; 作为国际高端家电引领者&#xff0c;卡萨帝今年以来在全球范围内展开了一系列的品牌布局活动。1月&#xff0c;卡萨帝于巴基斯坦召开品牌发布会&#x…

分类预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入分类预测

分类预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入分类预测 目录 分类预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输…

手写Spring系列【一】IOC的简单实现笔记

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;个人主页1 || 笑霸final的主页2 &#x1f4d5;系列专栏&#xff1a;项目专栏 &#x1f4e7;如果文章知识点有错误的地方&#xff0c;…

大日志(大文件)查看工具

一款很不错的日志查看工具&#xff0c; 优势是能查看很大的日志文档。 无需安装&#xff0c;解压后运行即可&#xff1b; 有注册版&#xff0c;不注册也可以使用。 官方地址&#xff1a; LogViewer - Home page 一个下载地址&#xff1a; 日志查看工具UVviewsoft LogViewer(超大…

电脑如何查看是否支持虚拟化及如何开启虚拟化

什么是虚拟化? Intel Virtualization Technology就是以前众所周知的“Vanderpool”技术&#xff08;简称VT&#xff0c;中文译为虚拟化技术&#xff09;&#xff0c;这种技术可以让一个CPU工作起来就像多个CPU并行运行&#xff0c;从而使得在一部电脑内同时运行多个操作系统成…

开山之作 | YOLOv1算法超详细解析(包括诞生背景+论文解析+技术原理等)

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。目标检测是计算机视觉领域的一项重要研究方向&#xff0c;它在许多应用领域中都得到了广泛应用&#xff0c;如人脸识别、物体识别、自动驾驶、视频监控等。在过去&#xff0c;目标检测方法主要采用基于RCNN、Fast R-CNN等深…