SpringCloud Alibaba 入坑(四)Sentinel 基本流控规则
[什么
是流控](about:blank#_23)
================================================================
[上一篇 SpringCloud Alibaba 入坑(三)Sentinel 入门
]( )
上篇文章介绍了 Sentinel 的基本用法,本章我们开始学习重点:Sentinel 的流控规则
===================================================================
流控就是流量控制,那么为什么要进行流控呢?
因为大型互联网应用都会有大量的用户流量,当遇到了某些特殊的时间节点,如:双十一秒杀、春节抢票等,大量的流量突然涌入系统,远远超过了服务器的处理能力,服务器可能直接宕机,造成整个系统不可用。
那么对这种问题,我们就需要对流量进行限制,对于超过限制的流量,我们可以采用熔断、降级、排队等待等方式来解决。
==================================================================
下面我们通过边讲边练的方式,来讲解流控的基本概念。
首先我们再执行一下上篇文章的 api 接口:
然后我们进入 Sentinel 后台,在簇点链路中,可以看到/hello,在列表右边可以看到添加流控的按钮
====================================================================
点下流控按钮,可以看到
在流控规则窗体里面,可以看到很多选项,那么这些都是些什么东东呢?
我们重点介绍下面三个:
资源名
这个比较好理解,就是 api 接口的名称了
阈值类型
阈值可以理解为最大值,如水的沸点是 100 度,水的温度阈值就是 100。
那么这个阈值类型就是最大值的不同类型,有两种:
QPS (Query Per Seconds)每秒的请求数,1 秒内对资源的请求次数,超过阈值后就启动限流
线程数 这个就是对资源访问的线程数,超过阈值就启动限流
单机阈值
这个就是根据上面选择的类型,设置的最大值了
==================================================================
光看文字介绍可能还是不好理解,那么我们来动手操作试试。
先来演示 QPS:阈值类型选择 QPS,然后单机阈值设置为 1,也就是说 1 秒内请求/hello 接口的次数超过 1 次,就会启动限流,最后点击新增,下面就出现了添加的流控规则:
测试下,浏览器访问下/hello,慢慢点击是没事的,快速点击(1 秒点击多次),就会出现下面的文字,意思是被 Sentinel 进行了限流。
然后我们在编辑下刚才的流控规则,把 QPS 改为线程数,阈值设置为 3,点击保存。
然后我们浏览器测试刚才的接口,可以看到不管点多快,接口都可以正常访问,没有出现限流。
那么怎么才能按线程数实现限流呢?
我们可以使用 JMeter 进行测试,JMeter 的基本使用这里就不介绍了,大家可以百度下。
评论