配置Kafka流控
Kafka支持对用户/客户端/Topic配置流量控制,控制生产/消费消息的上限速率。
用户/客户端的流控作用范围是整个broker,Topic的流控作用范围是指定Topic。
- 2022年11月10日及以后创建的实例支持此功能。
- 单机实例不支持配置流控。
操作影响
- 当流控值达到上限后,会导致生产/消费的时延增大。
- 设置的流控值较小且生产者速率较大时,可能会造成生产超时、消息丢失,导致部分消息生产失败。
- 初始生产/消费的流量较大,如果设置一个较小的流控值,会导致生产/消费的时延增大、部分消息生产失败。建议逐次减半设置流控值,待生产/消费稳定后继续减半设置,直到设置为目标流控值。例如初始生产流量100MB/s,可先设置生产流控为50MB/s,待稳定后再修改为25MB/s,直到目标流控值。
前提条件
- 如果需要对用户进行流量控制,请在Kafka详情页开启密文接入功能。然后在控制台的“用户管理”页面,获取用户名。
- 如果需要对指定客户端进行流量控制,请在客户端配置中获取client ID。
- 如果需要对指定Topic进行流量控制,请在控制台的“Topic管理”页面,获取Topic名称。
创建用户/客户端流控
- 登录管理控制台。
- 在管理控制台左上角单击,选择区域。
请选择Kafka实例所在的区域。
- 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
- 单击Kafka实例的名称,进入实例详情页面。
- 在左侧导航栏单击“流控管理 > 流控列表”,进入流控列表页面。
- 在页面顶端单击“User/Client”,进入“User/Client”页签。
- 在页面左上角单击“创建流控”,弹出“创建流控”对话框。
- 设置流控参数。
表1 流控参数说明 参数名称
说明
用户名
输入前提条件中获取的用户名,对此用户进行流控。如果需要对所有用户进行流控,在“用户名”后,单击“选择默认”。
流控创建完后,无法修改“用户名”。
客户端ID
输入前提条件中获取的客户端ID,对此客户端进行流控。如果需要对所有客户端进行流控,在“客户端ID”后,单击“选择默认”。
流控创建完后,无法修改“客户端ID”。
生产上限速率
设置生产上限速率,单位为MB/s。为空时,表示不设置速率。
消费上限速率
设置消费上限速率,单位为MB/s。为空时,表示不设置速率。
- 未开启密文接入的实例,在“创建流控”对话框中,不显示“用户名”。
- “用户名”和“客户端ID”不可同时为空。
- “生产上限速率”和“消费上限速率”不可同时为空。
- 单击“确定”,跳转到“后台任务管理”页面,当流控任务的“状态”为“成功”时,表示流控创建成功。
进入“流控管理 > 流控列表”页面,在“User/Client”页签中,单击页面左上角的“仅设置了用户名”/“仅设置了客户端ID”/“设置了用户名和客户端ID”,输入新创建的流控名称,按“Enter”,查看新创建的流控。
图1 查看新创建的流控
创建Topic流控
- 登录管理控制台。
- 在管理控制台左上角单击,选择区域。
请选择Kafka实例所在的区域。
- 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
- 单击Kafka实例的名称,进入实例详情页面。
- 在左侧导航栏单击“流控管理 > 流控列表”,进入流控列表页面。
- 在页面顶端单击“Topic”,进入“Topic”页签。
- 在页面左上角单击“创建流控”,弹出“创建流控”对话框。
- 设置流控参数。
表2 流控参数说明 参数名称
说明
Topic名称
输入指定Topic名称,对此Topic进行流控。
流控创建完后,无法修改“Topic名称”。
生产上限速率
设置生产上限速率,单位为MB/s。为空时,表示不设置速率。
消费上限速率
设置消费上限速率,单位为MB/s。为空时,表示不设置速率。
“生产上限速率”和“消费上限速率”不可同时为空。
- 单击“确定”,跳转到“后台任务管理”页面,当流控任务的“状态”为“成功”时,表示流控创建成功。
进入“流控管理 > 流控列表”页面,在“Topic”页签中,在页面左上角的搜索框中输入新创建的流控名称,按“Enter”,查看新创建的流控。
编辑流控
- 登录管理控制台。
- 在管理控制台左上角单击,选择区域。
请选择Kafka实例所在的区域。
- 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
- 单击Kafka实例的名称,进入实例详情页面。
- 在左侧导航栏单击“流控管理 > 流控列表”,进入流控列表页面。
- 在待修改的流控所在行,单击“编辑”,弹出“编辑流控”对话框。
- 修改生产上限速率或者消费上限速率,单击“确定”,跳转到“后台任务管理”页面,当流控任务的“状态”为“成功”时,表示流控修改成功。
进入“流控管理 > 流控列表”页面,查看修改后流控的生产上限速率或者消费上限速率。
“生产上限速率”和“消费上限速率”不可同时为空。
导出流控列表
- 登录管理控制台。
- 在管理控制台左上角单击,选择区域。
请选择Kafka实例所在的区域。
- 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
- 单击Kafka实例的名称,进入实例详情页面。
- 在左侧导航栏单击“流控管理 > 流控列表”,进入流控列表页面。
- 导出流控列表。
- 指定用户/客户端流控:在“User/Client”页签,勾选待导出的用户/客户端流控,单击“导出 > 导出已选中数据到XLSX”。
- 全部用户/客户端流控:在“User/Client”页签,单击“导出 > 导出全部数据到XLSX”。
- 指定Topic流控:在“Topic”页签,勾选待导出的Topic流控,单击“导出 > 导出已选中数据到XLSX”。
- 全部Topic流控:在“Topic”页签,单击“导出 > 导出全部数据到XLSX”。
删除流控
- 登录管理控制台。
- 在管理控制台左上角单击,选择区域。
请选择Kafka实例所在的区域。
- 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
- 单击Kafka实例的名称,进入实例详情页面。
- 在左侧导航栏单击“流控管理 > 流控列表”,进入流控列表页面。
- 在待删除的流控所在行,单击“删除”,弹出“删除流控”对话框。
- 单击“确定”,跳转到“后台任务管理”页面,当流控任务的“状态”为“成功”时,表示成功删除流控。