更新时间:2024-10-10 GMT+08:00

配置Kafka流控

Kafka支持对用户/客户端/Topic配置流量控制,控制生产/消费消息的上限速率。

用户/客户端的流控作用范围是整个broker,Topic的流控作用范围是指定Topic。

  • 2022年11月10日及以后创建的实例支持此功能。
  • 单机实例不支持配置流控。

操作影响

  • 当流控值达到上限后,会导致生产/消费的时延增大。
  • 设置的流控值较小且生产者速率较大时,可能会造成生产超时、消息丢失,导致部分消息生产失败。
  • 初始生产/消费的流量较大,如果设置一个较小的流控值,会导致生产/消费的时延增大、部分消息生产失败。建议逐次减半设置流控值,待生产/消费稳定后继续减半设置,直到设置为目标流控值。例如初始生产流量100MB/s,可先设置生产流控为50MB/s,待稳定后再修改为25MB/s,直到目标流控值。

前提条件

  • 如果需要对用户进行流量控制,请在Kafka详情页开启密文接入功能。然后在控制台的“用户管理”页面,获取用户名。
  • 如果需要对指定客户端进行流量控制,请在客户端配置中获取client ID。
  • 如果需要对指定Topic进行流量控制,请在控制台的“Topic管理”页面,获取Topic名称。

创建用户/客户端流控

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。

    请选择Kafka实例所在的区域。

  3. 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
  4. 单击Kafka实例的名称,进入实例详情页面。
  5. 在左侧导航栏单击“流控管理 > 流控列表”,进入流控列表页面。
  6. 在页面顶端单击“User/Client”,进入“User/Client”页签。
  7. 在页面左上角单击“创建流控”,弹出“创建流控”对话框。
  8. 设置流控参数。

    表1 流控参数说明

    参数名称

    说明

    用户名

    输入前提条件中获取的用户名,对此用户进行流控。如果需要对所有用户进行流控,在“用户名”后,单击“选择默认”。

    流控创建完后,无法修改“用户名”。

    客户端ID

    输入前提条件中获取的客户端ID,对此客户端进行流控。如果需要对所有客户端进行流控,在“客户端ID”后,单击“选择默认”。

    流控创建完后,无法修改“客户端ID”。

    生产上限速率

    设置生产上限速率,单位为MB/s。为空时,表示不设置速率。

    消费上限速率

    设置消费上限速率,单位为MB/s。为空时,表示不设置速率。

    • 未开启密文接入的实例,在“创建流控”对话框中,不显示“用户名”。
    • “用户名”和“客户端ID”不可同时为空。
    • “生产上限速率”和“消费上限速率”不可同时为空。

  9. 单击“确定”,跳转到“后台任务管理”页面,当流控任务的“状态”为“成功”时,表示流控创建成功。

    进入“流控管理 > 流控列表”页面,在“User/Client”页签中,单击页面左上角的“仅设置了用户名”/“仅设置了客户端ID”/“设置了用户名和客户端ID”,输入新创建的流控名称,按“Enter”,查看新创建的流控。

    图1 查看新创建的流控

创建Topic流控

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。

    请选择Kafka实例所在的区域。

  3. 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
  4. 单击Kafka实例的名称,进入实例详情页面。
  5. 在左侧导航栏单击“流控管理 > 流控列表”,进入流控列表页面。
  6. 在页面顶端单击“Topic”,进入“Topic”页签。
  7. 在页面左上角单击“创建流控”,弹出“创建流控”对话框。
  8. 设置流控参数。

    表2 流控参数说明

    参数名称

    说明

    Topic名称

    输入指定Topic名称,对此Topic进行流控。

    流控创建完后,无法修改“Topic名称”。

    生产上限速率

    设置生产上限速率,单位为MB/s。为空时,表示不设置速率。

    消费上限速率

    设置消费上限速率,单位为MB/s。为空时,表示不设置速率。

    “生产上限速率”和“消费上限速率”不可同时为空。

  9. 单击“确定”,跳转到“后台任务管理”页面,当流控任务的“状态”为“成功”时,表示流控创建成功。

    进入“流控管理 > 流控列表”页面,在“Topic”页签中,在页面左上角的搜索框中输入新创建的流控名称,按“Enter”,查看新创建的流控。

编辑流控

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。

    请选择Kafka实例所在的区域。

  3. 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
  4. 单击Kafka实例的名称,进入实例详情页面。
  5. 在左侧导航栏单击“流控管理 > 流控列表”,进入流控列表页面。
  6. 在待修改的流控所在行,单击“编辑”,弹出“编辑流控”对话框。
  7. 修改生产上限速率或者消费上限速率,单击“确定”,跳转到“后台任务管理”页面,当流控任务的“状态”为“成功”时,表示流控修改成功。

    进入“流控管理 > 流控列表”页面,查看修改后流控的生产上限速率或者消费上限速率。

    “生产上限速率”和“消费上限速率”不可同时为空。

导出流控列表

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。

    请选择Kafka实例所在的区域。

  3. 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
  4. 单击Kafka实例的名称,进入实例详情页面。
  5. 在左侧导航栏单击“流控管理 > 流控列表”,进入流控列表页面。
  6. 导出流控列表。

    • 指定用户/客户端流控:在“User/Client”页签,勾选待导出的用户/客户端流控,单击“导出 > 导出已选中数据到XLSX”。
    • 全部用户/客户端流控:在“User/Client”页签,单击“导出 > 导出全部数据到XLSX”。
    • 指定Topic流控:在“Topic”页签,勾选待导出的Topic流控,单击“导出 > 导出已选中数据到XLSX”。
    • 全部Topic流控:在“Topic”页签,单击“导出 > 导出全部数据到XLSX”。

删除流控

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。

    请选择Kafka实例所在的区域。

  3. 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
  4. 单击Kafka实例的名称,进入实例详情页面。
  5. 在左侧导航栏单击“流控管理 > 流控列表”,进入流控列表页面。
  6. 在待删除的流控所在行,单击“删除”,弹出“删除流控”对话框。
  7. 单击“确定”,跳转到“后台任务管理”页面,当流控任务的“状态”为“成功”时,表示成功删除流控。