SpringCloud-高级篇(二)

news2024/11/23 3:56:02

目录:

(1)限流规格-流控模式

           入门案例:直接模式

            关联模式:

           链路模式:

(2) 流控效果:warm up

          排队等待:

(3)热点参数限流:  


(1)流量控制-限流规格

接下来我们学习Sentinel的用法来解决我们之前提到的雪崩问题,在雪崩问题的时候,我们提到了四种解决方案,Sentinel主要实现了其中的三种:流量控制、线程隔离、降级熔断 

首先我们学习限流规则:

点击Sentinel控制台的簇点链路:

 sentinel_spring_web_context:是根Controller中的方法都是以它为根,是它的子链路,比如这里我们有一个controller

 后面有一些按钮,可以给这个资源做一些操作,做一些一些设置:

入门案例:流控模式默认是:直接模式

给这个接口添加流量控制,点击流控按钮:

 成功添加:

怎么测试:一种在浏览器狂刷,一种中超过5次就能触发,这种不好做到,再一种可以通过工具JMeter进行并发的模拟测试,打开编写好的测试计划:

 

20/2=10 QPS就是10大于设置的QPS=5,会触发流量控制 

 

发现请求 发出了,但是每次通过的只有5个,另外5个失败了

 显示429显示失败

 打开Sentinel控制台:实时监控:发现通过5个,拒绝5个,限流的控制就生效了

 在添加流控设置的时候点击高级选项

 

出现流控模式、流控效果这两个就是Sentinel限流的高级设置了 

 先研究流控模式:

 关联模式:

编写2个接口:

 重新启动项目,访问这连个接口

Sentinel控制台刷新出现在链路当中了

 给谁添加流控规则呢?给谁限流,就给谁添加流控规则,我们要给query限流,就给它添加规则:

 点击高级选项,选择关联,关联资源给/order/update  当update超过阈值5时,就给query做限流

点击query的流控按钮:在点击高级

 点击新增,流控规则添加成功了

 打开测试工具:

请求的QPS:1000/100=10 大于设置的QPS=5

 请求地址:

 启动:

这个请求本身没有受到任何影响:但是query受到影响了 

 访问query:

这样就实现了关联模式 

链路模式:

 

添加方法:service 

 controller:添加调用servie的方法queryGoods,再添加一个保存的方法

 在Sentinel默认只会监控Controller中的接口端点,不会监控service层的方法queryGoods这个方法没有被监控,就不能配置一些限流规则,那怎么办呢?我们应该监控这个方法,需要用到Sentintl中的注解:

 

 如果不关闭,默认会认为是同一个根链路,发展过来的子链路,就不能做链路控制了,只有不同的链路才能做控制

重新启动:先访问接口

 

在刷新Sentinel控制台,点击簇点链路:

 发现他俩变成一个独立的链路,现在可以给goods添加链路规则了,这两个goods是同一个,点击

流控按钮

 添加阈值,从/order/query链路进来的

 测试:QPS=4>设置的QPS=2

同时发送连个请求一个是save一个query

 

因为从query访问的QPS设置为2,query这个请求会被阻塞 

可以看到save不受影响:

query请求一直有两个是失败的

(2) 流控效果

warm up:做一个预热,(就像人做剧烈运动之前,先做一些拉伸的动作,给身体做一个预热)比如服务器的QPS阈值是10,刚启动立马就把QPS打满,他可能没有反应过来,就挂了,所以说服务刚刚启动,不能把QPS直接打满,在预热模式当中给为最大阈值的三位之一,就是为了冷启动那一刻过高并发导致的故障  

 

先访问一下,控制台才能出来: 

 

 

 设置QPS为10,加热时间为5秒

 

 刚开始成功只有3个,随着时间的推移,QPS会越来越高,成功的越来越多

 

 QPS是有变化的

排队等待: 

 假设请求是波动类型的,比如说第一秒钟一个请求没来,这个时候度一列是空的,第二秒一下子来了10个请求,其实这一秒的QPS已经到达10了,但是没关系,把你扔到这个队列,然后放行的速度是2秒放行一个,换算成QPS=5,不管你进入的QPS是怎么波动的,出去的QPS一定是一个稳定的,按照200ms去发,起到流量整型的作用,这就是对位服务的一种保护了

点击编辑:

 流控规则:排队等待

 测试:

设置的QPS为300/20=15>设置的阈值10

像以前就会报错,但是现在不会

 

 页面实时监控:通过的QPS是10,超过的都去队列中去了

 发送的QPS是多么的剧烈,放出去的是均衡的,起到了流量整型的作用

 

(3)热点参数限流: 

 

 上面的设置,对商品来讲,不同的商品的热度是不一样的,有一些商品他访问的频率高一些,有一些商品访问的频率低一些,上面的配置,所有都按照这个来,但是比如说有几个特殊的商品它的访问频率就是比较高可不可以把QPS跳的高一点呢?这就是热点参数的高级配置了。

 需要添加注解:这个热点参数才会有效

重启:先去访问一下

 它的下面多了hot

配置热点参数限流:注意不是点击流控,而是点击热点:这个里面没有高级选项

 还可以从左侧栏进行配置:

点击热点规则:点击新增热点限流规则

 

在点击高级:

 热点参数限流就配置好了

 测试:

第一个请求:

 第二个请求:

 第三个请求:

101是默认的QPS是2

102QPS最大是4

103QPS最大是10

而发送给的是5:

启动:

101允许的只有2个成功:

102允许的只有4个成功:

103所有请求成功 

热点参数限流:是一种更细粒度的限流,精细到了参数级别,所以有更细粒度的限流需求,可以使用热点参数限流,否则可以使用传统的限流

 

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

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

相关文章

tar和gzip压缩和解压

打包和压缩的区别:打包:将多文件 封装在一起压缩:将多文件 封装在一起 通过特定的算法 将冗余的数据 进行删除tar默认是打包命令,如果想用tar进行压缩 必须加选项1、gzip格式压缩:tar zcvf 压缩包包名 文件1 文件2 文件…

Java集合进阶(三)

文章目录一、Map1. 概述2. 基本功能3. 遍历4. 遍历学生对象5. 集合嵌套6. 统计字符出现次数二、Collections1. 常用方法2. 学生对象排序三、模拟斗地主一、Map 1. 概述 Interface Map<K, V>&#xff1a;K 是键的类型&#xff0c;V 是值的类型。 将键映射到值的对象&…

Redis高频面试题汇总(下)

目录 1.Redis中什么是Big Key(大key) 2.Big Key会导致什么问题 3.如何发现 bigkey&#xff1f; 4.为什么redis生产环境慎用keys *命令 5.如何处理大量 key 集中过期问题 6.使用批量操作减少网络传输 7.缓存穿透 8.缓存击穿 9.缓存雪崩 10.缓存污染&#xff08;或满了…

20230311英语学习

Philosophy of Food: Guidelines for an Authentic Approach to Eating 饮食哲学&#xff1a;值得思考的问题 Whats Philosophical About Food? Philosophy of food finds its basis on the idea that food is a mirror.Eating mirrors the making of a self, that is, the …

vue3.js的介绍

一.vue.js简述 Vue是一套用于构建用户开源的MVVM结构的Javascript渐进式框架&#xff0c;尤雨溪在2015年10月27日发布了vue.js 1.0Eavangelion版本&#xff0c;在2016年9月30日发布了2.0Ghost in the Shell版本&#xff0c;目前项目由官方负责 vue的核心只关注图层&#xff0…

BERT: Pre-training of Deep Bidirectional Transformers forLanguage Understanding

参考BERT原文[1810.04805] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (arxiv.org)【(强推)李宏毅2021/2022春机器学习课程】 https://www.bilibili.com/video/BV1Wv411h7kN/?p73&share_sourcecopy_web&vd_source30e93e9c70e…

CNN神经网络——手写体识别

目录 Load The Datesets Defining,Training,Measuring CNN Algorithm Datasets GRAET HONOR TO SHARE MY KNOWLEDGE WITH YOU This paper is going to show how to use keras to relize a CNN model for digits classfication Load The Datesets The datasets files are …

便携式井用自动采样器主要有哪些功能特点?

如图此款井用采样器整机小巧&#xff0c;非常适合狭小领域使用&#xff0c;携带方便&#xff0c;采样精准&#xff0c;可以延伸放到井下进行工作。尤其适合&#xff1a;窨井、下水道、沟渠 等现场条件恶劣的工作场合。可帮助采样人员采取到具有代表性的水样从而进行检测 参数特…

笔记本固态盘数据丢失怎么办?笔记本固态盘怎么恢复数据

如果笔记本固态盘数据丢失怎么办&#xff1f;笔记本固态盘怎么恢复数据&#xff1f;下面将为大家详细地介绍一下笔记本固态硬盘数据恢复的三种实用方法&#xff0c;希望对大家有所帮助。一、简单恢复方法笔记本固态硬盘数据删除以后&#xff0c;较为简单直接的恢复方法就是从回…

《C++代码分析》第三回:类成员函数覆盖父类函数的调用(分析this指针的变化)

一、前言 在C的学习中我们知道&#xff0c;子类是可以覆盖父类的方法&#xff0c;这里我们探讨一下子类方法调用父类方法时this指针时如何变化的。 二、示例代码 #include "windows.h" #include "windef.h" #include <iostream> #include <tch…

自学大数据第六天~HDFS命令

HDFS常用命令 查看hadoop版本 version hadoop version注意,没有 ‘-’ [hadoopmaster ~]$ hadoop version Hadoop 3.3.4 Source code repository https://github.com/apache/hadoop.git -r a585a73c3e02ac62350c136643a5e7f6095a3dbb Compiled by stevel on 2022-07-29T12:3…

蓝桥杯嵌入式(G4系列):定时器输出可调PWM

前言&#xff1a; 蓝桥杯定时器输出PWM的考点在历届真题中的出现次数较多&#xff0c;而且之前关于STM32的学习&#xff0c;我对于使用STM32Cubemx配置PWM的方式确实不是很熟悉&#xff0c;这里简单记录一下自己的学习过程。 STM32Cubemx配置部分&#xff1a; 这里我们是改编真…

yocto编译烧录和脚本解析

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、初始化构建目录二、imx-setup-release.sh脚本解析三、编译单独编译内核四、烧录总结前言 本篇文章主要讲解如何在下载好源码之后进行编译和yocto的脚本解析…

剑指 Offer II 027. 回文链表

题目链接 剑指 Offer II 027. 回文链表 easy 题目描述 给定一个链表的 头节点 head&#xff0c;请判断其是否为回文链表。 如果一个链表是回文&#xff0c;那么链表节点序列从前往后看和从后往前看是相同的。 示例 1&#xff1a; 输入: head [1,2,3,3,2,1] 输出: true 示例…

多目标遗传算法NSGA-II原理详解及算法实现

在接触学习多目标优化的问题上&#xff0c;经常会被提及到多目标遗传算法NSGA-II&#xff0c;网上也看到了很多人对该算法的总结&#xff0c;但真正讲解明白的以及配套用算法实现的文章很少&#xff0c;这里也对该算法进行一次详解与总结。会有侧重点的阐述&#xff0c;不会针对…

理解并解决【跨域】问题--通过代理或【CROS】

文章目录一.理解跨域问题引起跨域问题的原因浏览器的同源策略二.跨域问题的解决办法解决方法1-------代理&#xff08;前端配置&#xff09;解决方法2-----开启跨域资源共享CORS&#xff08;后端&#xff09;知识小贴士一.理解跨域问题 主要出现在前后端分离项目 引起跨域问题…

磨金石教育摄影技能干货分享|春之旅拍

春天来一次短暂的旅行&#xff0c;你会选择哪里呢&#xff1f;春天的照片又该如何拍呢&#xff1f;看看下面的照片&#xff0c;或许能给你答案。照片的构图很巧妙&#xff0c;画面被分成两部分&#xff0c;一半湖泊&#xff0c;一半绿色树林。分开这些的是一条斜向的公路&#…

合并两个链表(自定义位置合并与有序合并)LeetCode--OJ题详解

图片: csdn 自定义位置合并 问题&#xff1a; 给两个链表 list1 和 list2 &#xff0c;它们包含的元素分别为 n 个和 m 个。 请你将 list1 中 下标从 a 到 b 的全部节点都删除&#xff0c;并将list2 接在被删除节点 的位置。 比如&#xff1a; 输入&#xff1a;list1 [1…

【STL】list剖析及模拟实现

✍作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;C 初识list 1. list基本概况 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立…

前端前沿web 3d可视化技术 ThreeJS学习全记录

前端前沿web 3d可视化技术 随着浏览器性能和网络带宽的提升 使得3D技术不再是桌面的专利 打破传统平面展示模式 前端方向主要流向的3D图形库包括Three.js和WebGL WebGL灵活高性能&#xff0c;但代码量大&#xff0c;难度大&#xff0c;需要掌握很多底层知识和数学知识 Threej…