
# 配置Kafka流控
Kafka支持对用户/客户端/Topic配置流量控制，控制生产/消费消息的上限速率。
用户/客户端的流控作用范围是整个Broker，Topic的流控作用范围是指定Topic。
#### 约束与限制
- 2022年11月10日及以后创建的实例支持此功能。
- 单机实例不支持配置流控。
 
#### 操作影响
- 当流控值达到上限后，会导致生产/消费的时延增大。
- 设置的流控值较小且生产者速率较大时，可能会造成生产超时、消息丢失，导致部分消息生产失败。
- 初始生产/消费的流量较大，如果设置一个较小的流控值，会导致生产/消费的时延增大、部分消息生产失败。建议逐次减半设置流控值，待生产/消费稳定后继续减半设置，直到设置为目标流控值。例如初始生产流量100MB/s，可先设置生产流控为50MB/s，待稳定后再修改为25MB/s，直到目标流控值。
 
 #### 前提条件
- 如果需要对用户进行流量控制，请在Kafka详情页[开启密文接入](https://support.huaweicloud.com/usermanual-kafka/kafka_ug_0044.html#kafka_ug_0044__section1123154819370)功能。然后在控制台的"实例管理 \> 用户管理"页面，获取用户名。
- 如果需要对指定客户端进行流量控制，请在客户端配置中获取client ID。
- 如果需要对指定Topic进行流量控制，请在控制台的"实例管理 \> Topic管理"页面，获取Topic名称。
 
#### 创建流控
以下介绍创建用户/客户端/Topic流控的步骤。
- [创建用户/客户端流控]
  1. 登录[Kafka控制台](https://console.huaweicloud.com/dms/?engine=kafka&locale=zh-cn#/queue/manager/newKafkaList)。
  
  2. 在管理控制台左上角单击![](https://support.huaweicloud.com/usermanual-kafka/zh-cn_image_0143929918.png)，选择Kafka实例所在的区域。
  
  3. 单击Kafka实例的名称，进入实例详情页面。
  
  4. 在左侧导航栏单击"实例管理 \> 流控管理"，进入流控列表页面。
  
  5. 在页面顶端单击"用户/客户端"，进入"用户/客户端"页签。
  
  6. 在页面左上角单击"创建流控"，弹出"创建流控"对话框。
  
  7. 设置流控参数。 
     图1创建用户/客户端流控   
     ![](https://support.huaweicloud.com/usermanual-kafka/zh-cn_image_0000002539945641.png "点击放大")
     表1流控参数说明 
     | 参数名称       | 说明                                                                                                                                                                                                                                               |
     |:---|:---|
     | 用户名        | 仅开启密文接入的实例，才会展示该参数。 输入[前提条件]中获取的用户名，对此用户进行流控。如果需要对所有用户进行流控，在"用户名"后，单击"选择默认"。 该参数与"客户端ID"不可同时为空。 流控创建完后，该参数不支持修改。 |
     | 客户端ID      | 输入[前提条件]中获取的客户端ID，对此客户端进行流控。如果需要对所有客户端进行流控，在"客户端ID"后，单击"选择默认"。 该参数与"用户名"不可同时为空。 流控创建完后，该参数不支持修改。                                              |
     | 单个代理生产速率上限 | 设置单个代理的生产速率上限，单位为MB/s。为0时，表示不设置速率。 该参数与"单个代理消费速率上限"不可同时为0。                                                                                                                                                      |
     | 单个代理消费速率上限 | 设置单个代理的消费速率上限，单位为MB/s。为0时，表示不设置速率。 该参数与"单个代理生产速率上限"不可同时为0。                                                                                                                                                         |
        
     
     
  
  8. 单击"确定"，跳转到"后台任务管理"页面，当流控任务的"状态"为"成功"时，表示流控创建成功。 
     进入"实例管理 \> 流控管理"页面，在"用户/客户端"页签中，通过以下方法查看新创建的流控。
     - 未开启密文接入的实例：在搜索框中输入新创建的流控名称，按"Enter"。
     
     - 已开启密文接入的实例：单击页面左上角的"仅设置了用户名"/"仅设置了客户端ID"/"设置了用户名和客户端ID"，选择新创建的流控所属的分类，然后在搜索框中输入新创建的流控名称，按"Enter"
     
     
     图2查看新创建的流控   
     ![](https://support.huaweicloud.com/usermanual-kafka/zh-cn_image_0000002508152006.png "点击放大")
     
     
   
- [创建Topic流控]
  1. 登录[Kafka控制台](https://console.huaweicloud.com/dms/?engine=kafka&locale=zh-cn#/queue/manager/newKafkaList)。
  
  2. 在管理控制台左上角单击![](https://support.huaweicloud.com/usermanual-kafka/zh-cn_image_0143929918.png)，选择Kafka实例所在的区域。
  
  3. 单击Kafka实例的名称，进入实例详情页面。
  
  4. 在左侧导航栏单击"实例管理 \> 流控管理"，进入流控列表页面。
  
  5. 在页面顶端单击"Topic"，进入"Topic"页签。
  
  6. 在页面左上角单击"创建流控"，弹出"创建流控"对话框。
  
  7. 设置流控参数。 
     图3创建Topic流控   
     ![](https://support.huaweicloud.com/usermanual-kafka/zh-cn_image_0000002508152066.png "点击放大")
     表2流控参数说明 
     | 参数名称       | 说明                                                                                        |
     |:---|:---|
     | Topic名称    | 输入指定Topic名称，对此Topic进行流控。 流控创建完后，该参数不支持修改。                 |
     | 单个代理生产速率上限 | 设置单个代理的生产速率上限，单位为MB/s。为0时，表示不设置速率。 该参数与"单个代理消费速率上限"不可同时为0。  |
     | 单个代理消费速率上限 | 设置单个代理的消费速率上限，单位为MB/s。为0时，表示不设置速率。 该参数与"单个代理生产速率上限"不可同时为0。 |
        
     
     
  
  8. 单击"确定"，跳转到"后台任务管理"页面，当流控任务的"状态"为"成功"时，表示流控创建成功。 
     进入"实例管理 \> 流控管理"页面，在"Topic"页签的搜索框中输入新创建的流控名称，单击"Enter"，查看新创建的流控。
     
     
   
#### 编辑流控
1. 登录[Kafka控制台](https://console.huaweicloud.com/dms/?engine=kafka&locale=zh-cn#/queue/manager/newKafkaList)。
2. 在管理控制台左上角单击![](https://support.huaweicloud.com/usermanual-kafka/zh-cn_image_0143929918.png)，选择Kafka实例所在的区域。
3. 单击Kafka实例的名称，进入实例详情页面。
4. 在左侧导航栏单击"实例管理 \> 流控管理"，进入流控列表页面。
5. 在待修改的流控所在行，单击"编辑"，弹出"编辑流控"对话框。
6. 修改单个代理生产速率上限或者单个代理消费速率上限，单击"确定"，跳转到"后台任务管理"页面，当流控任务的"状态"为"成功"时，表示流控修改成功。 
   进入"实例管理 \> 流控管理"页面，查看修改后流控的生产上限速率或者消费上限速率。
   ![](https://support.huaweicloud.com/usermanual-kafka/public_sys-resources/caution_3.0-zh-cn.png)
   "单个代理生产速率上限"和"单个代理消费速率上限"不可同时为0。
   
   
 
#### 导出流控列表
1. 登录[Kafka控制台](https://console.huaweicloud.com/dms/?engine=kafka&locale=zh-cn#/queue/manager/newKafkaList)。
2. 在管理控制台左上角单击![](https://support.huaweicloud.com/usermanual-kafka/zh-cn_image_0143929918.png)，选择Kafka实例所在的区域。
3. 单击Kafka实例的名称，进入实例详情页面。
4. 在左侧导航栏单击"实例管理 \> 流控管理"，进入流控列表页面。
5. 导出流控列表。 
   - 指定用户/客户端流控：在"用户/客户端"页签，勾选待导出的用户/客户端流控，单击"导出 \> 导出已选中数据到XLSX"。
   
   - 全部用户/客户端流控：在"用户/客户端"页签，单击"导出 \> 导出全部数据到XLSX"。
   
   - 指定Topic流控：在"Topic"页签，勾选待导出的Topic流控，单击"导出 \> 导出已选中数据到XLSX"。
   
   - 全部Topic流控：在"Topic"页签，单击"导出 \> 导出全部数据到XLSX"。
   
   
   
   
 
#### 删除流控
1. 登录[Kafka控制台](https://console.huaweicloud.com/dms/?engine=kafka&locale=zh-cn#/queue/manager/newKafkaList)。
2. 在管理控制台左上角单击![](https://support.huaweicloud.com/usermanual-kafka/zh-cn_image_0143929918.png)，选择Kafka实例所在的区域。
3. 单击Kafka实例的名称，进入实例详情页面。
4. 在左侧导航栏单击"实例管理 \> 流控管理"，进入流控列表页面。
5. 在待删除的流控所在行，单击"删除"，弹出"删除流控"对话框。
6. 单击"确定"，跳转到"后台任务管理"页面，当流控任务的"状态"为"成功"时，表示成功删除流控。
 
#### 相关文档
- 如果您希望通过API创建用户/客户端流控，请参考[创建用户/客户端流控配置](https://support.huaweicloud.com/api-kafka/CreateKafkaUserClientQuotaTask.html)。
- 如果您希望通过API创建Topic流控，请参考[创建Topic流控配置](https://support.huaweicloud.com/api-kafka/CreateKafkaTopicQuota.html)。
 
