:-: ![](https://img.kancloud.cn/d9/31/d931a62aefd1a082798899f914d74a18_1874x613.png)
**设置流控规则的地方**
![](https://img.kancloud.cn/59/c2/59c2b68c2204ff5528b22f446f4ef13f_1286x648.png)
**限流规则组成因素**
* 资源名:限流规则的作用对象,唯一名称,默认为请求路径。
* 针对来源:可以针对调用者限流,为微服务的名称,default为不区分来源。
* 阈值类型:
* QPS是每秒请求次数。
* 线程数与QPS的区别是:QPS是指当超过阈值时会将多余的请求拒之门外,多余的请求根本就进不了微服务里面;而线程数是指所有的请求都可以进到微服务里面,多余的请求则在微服务里面直接丢弃。
* 单机阈值:填写整数。
* 是否集群:不勾选则不是集群。
* 流控模式:
* 直接:当一个请求超出阈值时,超出部分直接被限流。
* 关联:如果请求B关联请求A,则当请求B超出阈值时,对请求A限流。
* 链路:在指定的链路上的入口资源超出阈值则限流。
* 流控效果:
* 快速失败:当请求超出阈值后,超出的部分直接抛出异常,请求失败。
* Warm Up:称为预热/冷启动方式。假如设置阈值为10,预热时长为5s,则初始阈值为 `$ 10/codeFactor(默认为3)=3 $`,经过5s后阈值更改为10。
* 排队等待:就是当请求超出阈值后,超出的部分需要排队处理,可以规定每多少秒处理一个请求,只针对QPS阈值类型有效。
下面演示流控模式和流控效果的使用效果。
**1. 流控模式-直接**
(1)流控规则:1s内只处理一次请求。
![](https://img.kancloud.cn/08/54/085429c1ac4881bf86a062dee145e9c4_847x472.png)
(2)演示效果:在1s超出的请求被限流了。
![](https://img.kancloud.cn/ee/d6/eed6f68c51fdef8c0d9df27ba312f913_1309x308.gif)
<br/>
**2. 流控模式-关联**
(1)流控规则:`/testB`1s内只处理一次请求。
关联模式下,设置的单机阈值是`/testB`的阈值,不是`/testA`的阈值。
![](https://img.kancloud.cn/6d/7d/6d7da8349b6fd9f04e9c0b2d47ca94ab_842x577.png)
(2)演示效果:我使用Postman在1s内向`/testB`请求100次,由于`/testB`1s内被请求的次数超过1次,所以导致`/testA`被限流了。
![](https://img.kancloud.cn/0c/ca/0ccafb0e1fc2f2603d0d4b5e4fcafd28_1619x352.gif)
**3. 流控模式-链路**
(1)流控规则:
<br/>
**4. 流控效果-快速失败**
这种方式适用于对系统处理能力确切已知的情况下,比如通过压测确定了系统的准确水位时。
(1)流控规则:1s内只处理一次请求。
![](https://img.kancloud.cn/08/54/085429c1ac4881bf86a062dee145e9c4_847x472.png)
(2)演示效果:在1s超出的请求被限流了,直接抛出异常。
![](https://img.kancloud.cn/ee/d6/eed6f68c51fdef8c0d9df27ba312f913_1309x308.gif)
<br/>
**5. 流控效果-Warm Up**
当系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。
(1)流控规则:设置阈值为10,预热时长为5s,则初始阈值为 `$ 10/codeFactor(默认为3)=3 $`,经过5s后阈值更改为10。
![](https://img.kancloud.cn/a4/a4/a4a481591aa98aae1bd5c5ce9ff6e5df_844x539.png)
(2)演示效果:开始的时候阈值为3,1s内请求次数超过3次后被限流,经过5s后阈值为10,承担的请求次数变多就没有被限流了。
![](https://img.kancloud.cn/9b/79/9b79a8584481e442b94bbf8e6d7018f6_1279x352.gif)
<br/>
**6. 流控效果-排队等待**
这种方式主要用于处理间隔性突发的流量,例如消息队列。想象一下这样的场景,在某一秒有大量的请求到来,而接下来的几秒则处于空闲状态,我们希望系统能够在接下来的空闲期间逐渐处理这些请求,而不是在第一秒直接拒绝多余的请求。
>[info] 注意:匀速排队模式暂时不支持 QPS > 1000 的场景。
(1)流控规则:1s只处理一个请求,如果某一个请求在2000ms还没有被处理则丢弃。
![](https://img.kancloud.cn/ef/e8/efe880fdc099ea6892c4f2ebb539ff24_846x540.png)
(2)演示效果:我使用Postman在1s内发出100次请求,但是这些请求每隔1s才被处理。
![](https://img.kancloud.cn/64/f6/64f68f828ab765886d697f44262cf575_1540x294.png)
- 微服务
- 微服务是什么?
- 微服务架构
- 微服务优缺点
- 微服务技术栈
- 微服务框架对比
- SpringCloud
- SpringCloud是什么
- SpringCloud与SpringBoot对比
- SpringCloud与Dubbo对比
- Rest微服务案例
- 总体介绍
- 父工程构建步骤
- 公共模块构建步骤
- 服务端模块构建步骤
- 消费端模块构建步骤
- Eureka服务注册与发现
- Eureka是什么
- Eureka原理
- Eureka注册服务中心构建
- 向Eureka注册已有微服务
- Eureka的自我保护机制
- Eureka服务发现
- Eureka集群配置
- Eureka与Zookeeper对比
- Ribbon负载均衡
- Ribbon是什么
- Ribbon负载均衡演示
- 构建服务端模块
- 构建消费端模块
- Ribbon核心组件IRule
- 自定义负载均衡策略
- Ribbon均衡策略优先级
- 轮询策略算法
- OpenFeign负载均衡
- OpenFeign是什么
- 负载均衡演示
- 日志打印功能
- 导出功能
- Hystrix断路器
- Hystrix是什么
- 服务熔断
- Hystrix服务端构建
- 服务熔断演示
- 服务熔断类型
- HystrixProperty配置汇总
- 服务降级
- Hystrix客户端构建
- 服务降级演示
- fallbackFactory
- 熔断与降级
- 服务监控
- 网关服务Zuul
- Zuul是什么
- Zuul路由服务构建
- 设置访问映射规则
- Config分布式配置中心
- Config分布式配置中心是什么
- Config服务端与Git通信
- Config客户端获取配置
- Config客户端动态刷新
- Bus消息总线
- Bus消息总线是什么
- Bus消息总线原理
- 广播通知设计思想
- 广播通知演示
- 定点通知演示
- Stream消息驱动
- 为什么要引入Stream
- Stream消息驱动是什么
- Stream设计思想
- Stream流程和注解
- Stream案例演示
- 重复消费问题
- 消息持久化
- Sleuth分布式链路跟踪
- Sleuth是什么
- 搭建链路监控
- SpringCloud Alibaba
- Nacos注册与配置中心
- Nacos是什么
- 安装并运行Nacos
- Nacos注册中心
- 服务端入住Nacos
- 消费端入住Nacos
- Nacos负载均衡演示
- 服务注册中心对比
- Nacos的AP和CP转化
- Nacos配置中心
- 基础配置演示
- Nacos分类配置
- Nacos集群搭建
- Sentinel实现熔断与限流
- Sentinel是什么
- Sentinel环境搭建
- Sentinel监控微服务演示
- Sentinel流控规则
- 流量监控的作用
- 设置流控规则
- Sentinel降级规则
- 熔断降级作用
- 设置降级规则
- Sentinel热点限流
- 什么是热点
- 设置热点限流
- Sentinel系统限流
- @SentinelResource
- @SentinelResource属性
- @SentinelResource限流演示
- @SentinelResource熔断演示
- 规则持久化
- 熔断框架比较
- Seata分布式事务
- 分布式事务问题
- Seata是什么
- Seata分布式事务过程
- Seata环境搭建
- 演示示例
- 业务说明
- 数据库环境准备
- 微服务环境准备
- 测试
- Consul服务注册与发现
- Consul是什么
- Consul能做什么
- 环境搭建
- Windows平台
- 服务端入住Consul
- 消费端入住Consul
- 注册中心对比
- Zookeeper服务注册与发现
- Zookeeper是什么
- 环境搭建
- 服务端入住Zookeeper
- 消费端入住Zookeeper
- 网关服务Gateway
- Gateway是什么
- Gateway能做什么
- Gateway对比Zuul
- 三大核心概念
- Gateway工作流
- 环境搭建
- 网关路由配置方式
- 配置文件配置
- 代码中配置
- 动态路由
- Predicate断言
- 断言是什么
- 常用断言
- Filter过滤器
- 过滤器是什么
- 过滤器种类
- 自定义过滤器