开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第二阶段:流控规则-基本配置】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/684/detail/11873
流控规则-基本配置
内容介绍:
一、课程回顾及学习重点
1、课程回顾
2、学习重点
二、流控规则
1、流控规则的概念和原理
2、流控规则的配置项
3、阈值类型效果演示
一、 课程回顾及学习重点
1、课程回顾
Sentinel 的基本概念和重要功能。最后得出,我们需要做的事情,就是在 Sentinel 的资源上配置各种各样的规则,来实现各种容错的功能。
2、学习重点
配置各种各样的 Sentinel 的规则,在 Sentinel 的内部提前为我们预制好了五种规则。这五种规则分别是流控规则、降级规则、热点规则、系统规则以及授权规则,前面三种规则最为常见。
二、 流控规则
1、流控规则的概念和原理
流控规则就是流量控制规则,其原理是 Sentinel 监控应用流量的 QPS (每秒查询率)或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。
2、流控规则的配置项
首先用浏览器访问一下 localhost:8091/order/message1 一直点刷新会发现没有任何的保护措施,接着点击簇点链路为 message1 设置流控规则弹出如下界面,为流控规则的添加面板。
(1)资源名:唯一的名称,默认是请求路径,可自定义
(2)针对来源:指定对哪个微服务进行限流,默认指 default ,意思是不区分来源,全部限制
什么是针对那个微服务呢?
解释如下图,比如现在有个微服务是 C 这就是当前order 微服务,那么在前面有两个微服务 A 和 B 分别来调用 C ,此时 A 和 B 就可以认为是 C 的两个来源,可以针对这两个来源进行分别的限流,图中就把 A 过去的设成5, B 过去的设成3,这就是来源的意思。
(3)阈值类型/单机阀值:
QPS (每秒请求数量):当调用该接口的 QPS 达到阈值的时候,进行限流。
假如设置成3,表示每秒钟最大允许3个查询数量进来。
线程数:当调用该接口的线程数达到阈值的时候,进行限流。
(4)是否集群:暂不需要集群
3、阈值类型的效果演示
(1)首先是 QPS 设置单机阈值为3,点击新增,现在同样一直点击刷新,会发现每秒请求大于3的时候就被限流了,这就是第一个效果。
(2)接着将编辑改成线程数,单机阈值改成2保存。再次刷新,会发现无论刷新频率多高都不会进行限流,这是因为只有一个线程在访问。
如果想模拟多线程时,可以利用到前面所学的 JMeter 工具,添加一个线程组,线程数设为2,把循环次数点为永远,添加取样器 HTTP 的,这里需要设置一个模拟的路径协议: http 服务器名称或 IP : localhost 端口号:8091,路径: /order/message1 ,接着点击启动后就会向 message1 发请求,随后再次刷新就会发现已经被限流了。