Sentinel使用

前言:

        所有的准备工作都做好了,就可以进入到Sentinel的具体使用上了,这里还需要一个测试工具叫做jmeter,是一个很好的测试工具,专门针对并发的,准备好以后,就可以直接开干了。

一、Sentinel作用

        Sentinel主要是为了解决雪崩问题。微服务的雪崩就是当一个服务出现问题,其它调用问题服务的服务也会出现问题,从而一传十十传百,导致整个系统崩溃,解决微服务雪崩的常见方式有四种:

超时处理:请求超过一定时间就返回报错信息。

仓壁模式:也叫做线程隔离,限制每个业务使用线程的数量,减少对其它业务的影响。

熔断降级:统计请求异常的比例,异常比例达到阈值之后,会熔断该业务,拦截一切访问该业务的请求。

流量控制:对业务的QPS进行限制,避免服务因为流量激增而鼓掌。

二、控制台基本使用

1、进入到Sentinel控制台页面,尝试使用jmeter并发访问某可接口:

可以在实时监控里面看到QPS变化的折线图,也可以看到右边有相关数据的统计。

2、点击簇点链路,可以为不同的url设置流控规则:

 流控规则基本上分为两种:一个是QPS、一个是并发线程数

(1)QPS:在后面的单机阈值里面的设置最大的QPS值,就是每秒钟允许的最大并发量,这种模式下,只要并发量查过最大阈值,都会被拒绝,返回的结果是429,表示被限流。

(2)并发线程数:在后面的单机阈值里面的设置最大线程数量,每秒钟最多有两个线程支持你的请求。这种模式下,最大的QPS可能很大,但是不稳定,时高时低,但是超过线程能处理的能力范围之后,就会出现拒绝,也就是限流。

3、高级选项

 在新增流控规则中点击高级选项,出现流控模式,有三种:

直接模式:统计当前请求的资源,当超过阈值之后,对当前资源直接限流,是默认模式。

关联模式:在某些业务场景下,限流也需要有权重,比如:修改订单和查询订单,都是需要对订单进行操作,这会导致锁的竞争,但是修改订单的权重显然大于查询,因此,当修改订单的请求到达阈值时,需要对查询订单做限流。大致一是就是,我这里都忙不过来了,你就不要来添堵了。

链路模式:在创建订单和查询订单时,都会去查询商品服务,但是查询订单的并发量往往比较高,这时,就需要给这个查询链路加上一个并发的上线,不能让它的QPS无限放大,从而影响到订单的创建。

另外还有流控效果,也分为三种:

快速失败:到达阈值之后,新的请求会立即拒绝并且抛出异常,这是默认的方式。

Warm Up:预热模式,主要是以防止服务的冷启动,服务刚启动时就有大量的请求进入,直接干蹦服务;高开始阈值大概是最大阈值的三分之一,会设置一个预热时间,在这个时间段内,阈值会慢慢加大,直到达到最大阈值,那超过阈值的请求也会理解被拒绝。

排队等待: 将所有的请求放到一个队列里面,根据QPS的大小,计算出请求间隔的时间,例如QPS=5,那么1s钟需要执行5个请求,每个请求就是200ms,第二个请求需要等待第一个请求执行完,那么必须要等待200ms,以此类推,后续的请求进来之后,都会计算自己的预计等待时间,如果预计等待时间比设置的最大等待时间要大,那么该请求就会被拒绝。

 最后还有一种热点规则,精确到了参数,例如:商品A查询的QPS是10,而商品B的QPS是2,那么商品A相对于商品B来说是热点数据,我们可以通过对他的id设置限流,说实话,这个有点针对的感觉;查询商品用的是一个接口,只是参数不一样,对不同的参数可以设置限流,但是需要注意的是 热点参数对默认的SpringMVC资源无法生效,需要在方法上添加注解@SentinelResource("随便起个名字")

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

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

相关文章

闲人闲谈PS之五十一——项目物料移动中的2个WBS

惯例闲话:2024年在不知不自觉中已经到来,之前闲人也聊起过2023年是忙碌和收获的一年。今年的任务初步排一下,也基本上排到年底去了,又会是忙碌的一年。虽然忙碌,但是今年对于自己而言,有更加重要的事情要去…

vue3顶部内容固定定位,下面内容可以向上滚动

功能要求:一个div里有两个模块儿,顶部按钮模块儿和下面的内容区域模块儿,顶部按钮模块儿固定在顶部不随滚动条滚动,下面内容区域可以滚动 如图: 思路是: 1、顶部按钮固定定位,会脱离文档流&…

两阶段提交协议三阶段提交协议

两阶段提交协议 分布式事务是指会涉及到操作多个数据库的事务,在分布式系统中,各个节点之间在物理上相互独立,通过网络进行沟通和协调。 XA 就是 X/Open DTP 定义的交易中间件与数据库之间的接口规范(即接口函数),交易…

sublime text 打开 txt 文档乱码问题

对于 windows 系统使用系统自带的 txt 编辑工具,默认打开和保存文件的文件的格式是 GBK 或者 GB2312,而 sublime 默认仅支持 utf-8,所以当从 windows 系统拷贝文件在 mac 上浏览有时候会出现乱码的问题,这时候就需要安装插件使 su…

python统计分析——直方图(plt.hist)

使用matplotlib.pyplot.hist()函数绘制直方图 from matplotlib.pyplot as pltdata_setnp.array([2,3,3,4,4,4,4,5,5,6]) plt.hist(fish_data) 下面介绍plt.hist()函数中常用的几个重要参数(参数等号后为默认设置): (1&#xff0…

Linux基础——进程初识(二)

1. 对当前目录创建文件的理解 我们知道在创建一个文件时&#xff0c;它会被默认创建到当前目录下&#xff0c;那么它是如何知道当前目录的呢&#xff1f; 对于下面这样一段代码 #include <stdio.h> #include <unistd.h>int main() {fopen("tmp.txt", …

Web 自动化测试过程中会遇到哪些问题?

作者&#xff1a;木可 链接&#xff1a;https://www.zhihu.com/question/636965892/answer/3341410674 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 Web自动化是指使用测试脚本来自动执行网页上的任务。这包括填…

螺丝厂家:家具螺丝的类型和规格

作为家具厂采购经理&#xff0c;您是否经常对如何选择合适的家具螺钉困惑不已&#xff1f;您想了解不同种类和型号家具螺钉特征和适用场景吗&#xff1f;你想找专业指南来帮助你提升产品质量和稳定性吗&#xff1f;假如你有这些困惑&#xff0c;那么就来对地方了&#xff01; 在…

Python遍历读取 A 文件夹中的 A1、A2、A3、A4、A5 中的各子文件夹中的图片,并对每张图片处理后保存到指定路径

目录 一、具体步骤二、文件夹目录结构样例三、代码四、实例遍历处理后结果五、总结 一、具体步骤 首先&#xff0c;指定 A 文件夹的路径和重命名后的文件夹路径。 然后&#xff0c;遍历 A 文件夹中的各子文件夹。 在每个子文件夹中&#xff0c;遍历所有文件。 读取每个文件&am…

使用 Swagger 导入 Postman: 最佳实践与步骤解析

Swagger和 Postman 都是常用的 API 测试工具&#xff0c;都有各自的优势。为了结合两者的优点&#xff0c;我们可以考虑将 Swagger 中的 API 定义导入到 Postman 中去&#xff0c;这样就可以利用 Postman 更强大的测试功能来测试 Swagger 定义的接口。 下面将以 Swagger Petst…

知虾会员**成为知虾会员,尊享专属权益**

在当今繁忙的生活中&#xff0c;线上购物已经成为现代人们的主要消费方式之一。而作为线上购物平台的领军者之一&#xff0c;Shopee为了提供更加个性化和便利的购物体验&#xff0c;推出了知虾会员&#xff08;Shopee会员&#xff09;服务。知虾会员不仅可以享受到一系列会员专…

LeetCoed刷题:21. 合并两个有序链表

题目&#xff1a; 是否独立解出&#xff1a;否 解题时的思路与想法&#xff1a;解题时有几个问题&#xff1a; 1.怎么遍历两个数组&#xff0c;嵌套两个while循环不能实现&#xff08;后面通过看题解知道list1&#xff01;null&&list2&#xff01;null&#xff09; …

修改 docker /dev/shm 的大小

修改 docker /dev/shm 的大小 1&#xff0c;获取完整id&#xff1a; docker inspect 245| grep Id rootlynxi:~# docker inspect 245| grep Id"Id": "245ab167ed9a79873b31b3a38df2053870fe72f267c3c1a660df25c63e37e88b",2&#xff0c;修改 ShmSize&…

函数模板和类模板(初阶)

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生&#x1f43b;‍❄个人主页&#x1f389;&#xff1a;GOTXX&#x1f43c;个人WeChat&#xff1a;ILXOXVJE&#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&am…

【springboot配置文件加载源码分析】

在Spring Boot的源码中&#xff0c;配置文件的加载是在应用程序启动的早期阶段进行的。具体来说&#xff0c;配置文件加载的主要步骤发生在SpringApplication类的run()方法中的prepareEnvironment方法中&#xff0c;真正读取我们的配置文件还是PropertySourceLoader。 本篇博客…

哪个牌子最值得购买?好用的洗地机排行榜

随着生活水平的提高&#xff0c;人们对家庭卫生的重视程度也越来越高&#xff0c;家用洗地机成为了现代家庭清洁中不可或缺的一部分。2024年的品牌排行榜也开始逐渐浮出水面&#xff0c;消费者们对于哪个品牌的家用洗地机更值得信赖也开始产生了新的讨论。接下来&#xff0c;让…

跟我用路由器学Linux编程实例四

专栏目录 第一章 简单编程实现花生壳的ddns功能 第二章 让花生壳ddns脚本自动工作 第三章 同时解析多个花生壳域名的脚本 第四章 具有通用性的花生壳ddns脚本 用折腾路由的兴趣&#xff0c;顺便入门shell编程。 第四章 具有通用性的花生壳ddns脚本 文章目录 专栏目录第四章 具…

C语言快速入门——基础知识

C语言基础 C语言基础C程序基本格式基本数据类型原码、反码和补码原码反码补码 整数类型浮点类型字符类型 变量变量的使用无符号数类型转换 运算符基本运算符运算符优先级自增自减运算符位运算符逻辑运算符 流程控制分支语句 - if分支语句 - switch循环语句 - for循环语句 - whi…

Ebean:一款被低估的ORM框架

ORM框架为什么不香&#xff1f; 对ORM框架的偏见 看了一些MyBaties与Hibernate进行对比的文章。可能是因为一些Hibernate历史原因&#xff0c;国内对于Hibernate普遍存在偏见&#xff0c;我摘抄了几点&#xff1a; 1. hibernate是全自动&#xff0c;而mybatis是半自动 hibernat…

如何让软文真正起效?媒介盒子为你解答

在如今这个互联网大环境下&#xff0c;想要写出有价值的软文去“忽悠”用户其实是不简单的&#xff0c;那我们应该怎么做才能让软文真正起效呢&#xff1f;媒介盒子为你解答。 一、软文写作前 1.了解平台特性 每个平台都有自己的定位。有的定位于以分享专业知识为主&#xff…