# QoS流控管理概述
#### 使用场景
在云计算场景中常面临多桶共用网络资源、核心业务与非核心业务共用带宽的情况，无论是交易支付等时延敏感业务，还是日志备份等非实时流量，均需依托稳定的网络环境，同时需控制带宽成本、避免资源滥用。然而，由于带宽和系统资源有限，多业务间资源争抢、非核心流量占用大量带宽会导致关键业务出现卡顿、丢包、时延过高。突发异常流量、带宽滥用还会造成成本超支，甚至影响整体业务稳定性。
为了帮助您基于业务与流量特征进行差异化资源分配，解决多租户资源争抢、业务波动、带宽成本不可控等问题，**OBS提供服务质量QoS（Quality of Service）功能，使用流控管理保障各类业务网络质量。**
#### 相关背景知识
使用QoS功能时，您可能想要了解以下背景知识：
- **QPS** ：每秒请求数（Query Per Second, QPS），即系统每秒能处理多少次访问请求，反映处理请求的效率、吞吐量、业务承载上限。**使用QoS功能可** [为桶指定QPS上限](https://support.huaweicloud.com/usermanual-obs/obs_03_10083.html#ZH-CN_TOPIC_0000002753591863__zh-cn_topic_0000002566858421_section1425115403153)**。**
- **带宽** ：单位时间内传输的数据量，单位为Byte/s，反映网络传输能力，决定系统能否把请求结果快速返回给客户端。**使用QoS功能可** [为桶指定带宽上限](https://support.huaweicloud.com/usermanual-obs/obs_03_10083.html#ZH-CN_TOPIC_0000002753591863__zh-cn_topic_0000002566858421_section1425115403153)**。**
- **并发请求数** ：同一时刻同时在处理的请求数量，反映系统对突增流量、多用户同时访问的承受能力。**使用QoS功能可** [为桶指定并发请求数上限](https://support.huaweicloud.com/usermanual-obs/obs_03_10083.html#ZH-CN_TOPIC_0000002753591863__zh-cn_topic_0000002566858421_section1425115403153)**。**
- **流控：** 指通过限制单位时间内的请求数、并发请求数或带宽，保障系统资源不被耗尽、服务正常运行，从而维持整体稳定性的一种限流保护策略。当对桶的请求**超过** 桶的QPS、带宽或并发请求数**上限时会触发流控，表现为请求响应时延变长或请求失败返回429。**流控策略能维护业务稳定，例如攻击者恶意发送大量请求，想通过消耗大量资源从而影响正常业务运行，此时流控可以限制攻击频率等指标，减少异常流量对正常业务的冲击。
- **集群** ：集群是由多台相互独立的计算或存储节点，通过网络和分布式调度系统组成的资源集合。创建桶后，桶会被分配到某个集群中，对桶和桶内对象的访问会消耗集群资源。每个账号在指定集群都有**QPS** 、**带宽** 、并发请求数上限，如何查看请参考[查看某个集群的账号级QoS](https://support.huaweicloud.com/usermanual-obs/obs_03_10082.html#ZH-CN_TOPIC_0000002724152108__zh-cn_topic_0000002566698435_section1514768164)。
- **桶级QoS规则：** 作用在**单个桶或并行文件系统** 上，限制桶的QPS、带宽、并发请求数上限，访问桶时不能超过该上限。桶级QoS规则**支持用户自定义**，但是自定义的值不能超过桶所在集群的账号级QoS限制。
- **账号级QoS规则：** 作用在**单个账号** 上，限制账号在某个集群的QPS、带宽、并发请求数的上限，使用账号给桶配置桶级Qos不能超过该上限。账号级QoS规则**不支持自定义** 。
  ![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/caution_3.0-zh-cn.png)
  当账号下某个集群的QPS、带宽、并发请求数超过限制时，如果想要申请更多资源，可联系[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/business?productTypeId=2a129f7ed0b543c6b92d73e2c26aa590&subTypeId=-1&type=2)联系技术人员申请。
  
 
#### 约束与限制
![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/caution_3.0-zh-cn.png)
QoS流控管理功能当前仅在部分区域上线（例如西南-贵阳一），其余区域正在上线中，具体支持情况以控制台实际展示为准。
- 当前仅**桶级QoS规则** 支持用户自定义，**租户级** **QoS规则** 可[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/business?productTypeId=2a129f7ed0b543c6b92d73e2c26aa590&subTypeId=-1&type=2)联系技术人员调整。如果桶没有配置桶级QoS规则，那么该桶最大可使用到账号下集群资源的最大值。
- 桶所属集群的指标如果没有限制，那么桶可配置的对应指标最大为2^63^-1。
- QPS或带宽任一指标超过阈值会触发流控。触发流控时，**请求时延会上升，请求响应中会携带** **头域x-obs-qos-delay-time** ，该头域为请求被流控的时长，单位为ms。上传类请求（[PUT上传](https://support.huaweicloud.com/api-obs/obs_04_0080.html)、[上传段](https://support.huaweicloud.com/api-obs/obs_04_0099.html)等）会返回精确的被流控时长，下载类请求（[下载对象](https://support.huaweicloud.com/api-obs/obs_04_0083.html)等）会返回根据流控程度和文件大小估算出的被流控时长。
- 并发请求数超过阈值会触发流控。触发流控时，请求会**立即失败，返回429**。当QPS或带宽流控时，由于请求时延上升，也会导致并发请求数增加。
 
#### 工作原理
![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002535938596.png "点击放大")
如上图所示，以区域1下所属集群A的三个桶为例介绍桶的流控管理工作原理。集群A下有3个桶，其中桶A部署了关键核心业务，桶B为桶A的备用桶，桶C为其他业务的预留桶。
假设集群A的并发请求数最大为1000，未配置桶流控策略和配置桶流控策略的情况如下：
- **未配置桶流控策略：** 桶A、桶B和桶C的最大并发请求数均可以达到1000。同时并发访问3个桶，如果在某一时刻桶B和桶C的并发请求数达到集群的80%（800），那么桶A的并发请求数最大只能达到集群的20%（200），由于桶B和桶C抢占了集群的大部分资源而造成访问桶A有时延。
  图1未配置桶流控策略   
  ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002535778676.png "点击放大") 
- **配置桶流控策略：** 根据3个桶的业务属性，为桶A不配置最大并发请求数或配置最大并发请求数为1000，为桶B配置最大并发请求数为200，为桶C配置最大并发请求数为100，这样在某一时刻即使桶B和桶C分别达到最大并发请求数（200和100），桶A的并发请求数最大可达到700，仍然可以保证桶A的业务平稳运行。
  图2配置桶流控策略   
  ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002566858431.png "点击放大") 
 
