手把手带你领略双十一背后的核心组件Sentinel之流控规则
Posted IT挖掘机y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手带你领略双十一背后的核心组件Sentinel之流控规则相关的知识,希望对你有一定的参考价值。
1、Sentinel相关概念的介绍
1.1 、 什 么 是 流 控 规 则 ? {1.1、什么是流控规则?} 1.1、什么是流控规则?
简单了说就是流量控制(所谓的流量就是请求或者叫访问)
1.2 、 什 么 是 Q P S ? {1.2、什么是QPS?} 1.2、什么是QPS?
每秒请求数,当API的QPS达到阈值时进行限流
1.3 、 什 么 是 线 程 数 ? {1.3、什么是线程数?} 1.3、什么是线程数?
当请求API的线程数达到阈值时进行限流
2、流控模式
2.1 、 直 接 {2.1、直接} 2.1、直接
2.1.1 、 选 择 阈 值 类 型 为 Q P S {2.1.1、选择阈值类型为QPS} 2.1.1、选择阈值类型为QPS
连
续
刷
新
,
当
我
间
隔
1
s
访
问
时
,
访
问
的
是
正
常
数
据
{连续刷新,当我间隔1s访问时,访问的是正常数据}
连续刷新,当我间隔1s访问时,访问的是正常数据
连
续
刷
新
,
当
我
间
隔
<
1
s
时
,
会
访
问
到
系
统
默
认
数
据
{连续刷新,当我间隔<1s时,会访问到系统默认数据}
连续刷新,当我间隔<1s时,会访问到系统默认数据
2.1.2 、 选 择 阈 值 类 型 为 线 程 数 {2.1.2、选择阈值类型为线程数} 2.1.2、选择阈值类型为线程数
使用JMeter进行模拟并发测试
零基础带你入门JMeter-模拟高并发接口测试,小白教程!:https://blog.csdn.net/Kevinnsm/article/details/117302197?spm=1001.2014.3001.5501
2.2 、 关 联 {2.2、关联} 2.2、关联
首先先了解一下什么是关联,所谓关联就是一个接口依赖另外一个接口,当后者的资源达到阈值时,会发生限流,而这个限流是限制的前者。比如接口A依赖接口B,接口B的QPS达到阈值,然后会对A进行限流
为 什 么 要 这 样 做 呢 ? {为什么要这样做呢?} 为什么要这样做呢?
这是为了保障那些非常重要的接口,如果某银行的信息修改接口能和支付接口相比吗?
使
用
p
o
s
t
m
a
n
模
拟
测
试
{使用postman模拟测试}
使用postman模拟测试
2.3 、 链 路 {2.3、链路} 2.3、链路
当从某个接口过来的资源达到限流条件时,开启限流
比 如 我 A 接 口 和 B 接 口 同 时 调 用 同 一 个 服 务 , 如 果 A 的 Q P S 达 到 阈 值 就 会 对 A 进 性 限 流 , 而 B 不 会 受 任 何 影 响 {比如我A接口和B接口同时调用同一个服务,如果A的QPS达到阈值就会对A进性限流,而B不会受任何影响} 比如我A接口和B接口同时调用同一个服务,如果A的QPS达到阈值就会对A进性限流,而B不会受任何影响
3、流控效果
3.1 、 快 速 失 败 {3.1、快速失败} 3.1、快速失败
这个快速失败前面都使用过,就是当QPS或者线程数达到阈值时直接返回默认数据!
3.2 、 W a r m U p {3.2、Warm Up} 3.2、WarmUp
Warm Up主要应对这一种情况,服务器中的某个API平常没人访问,突然一下来了海量的请求,如果直接放进来,那系统就直接GG了;所以需要预热,(比如我最开始处理QPS=3的访问量,慢慢的经过10秒后,我能处理QPS=10的访问量,就是这个意思,需要一定的时间预热)
初始值怎么计算呢?比如上方这张图,初始的QPS=9/3=3,经过五秒后能达到QPS=9,系统默认值是除以3.
3.3 、 排 队 等 待 {3.3、排队等待} 3.3、排队等待
所谓的排队等待就是如果达到了阈值,那么其他的请求就在一边排队等着
上面我设置了QPS=1的阈值,也就是一秒只能一个请求;超过了就在那等着
然后从控制台就可以看出一秒处理一个请求
以上是关于手把手带你领略双十一背后的核心组件Sentinel之流控规则的主要内容,如果未能解决你的问题,请参考以下文章
手把手带你领略双十一背后的核心技术Sentinel之热点参数限流
简单几行代码带你快速了解淘宝双十一的强大技术支撑点Sentinel+Nacos