文档

通过Kafka命令行修改Topic/Broker属性

更新时间:

修改消息引擎Topic和Broker的配置参数对于系统性能优化和维护至关重要,本文档将介绍如何使用Kafka命令行工具访问和修改消息引擎配置,以帮助您及时了解和优化其配置,满足您的业务需求。

前提条件

  • 已安装Java环境,要求安装JDK 1.8及以上版本。

  • 下载并安装Kafka Shell工具,详情请参见下载命令行工具

  • 已将客户端IP地址添加至Lindorm实例的白名单中,具体操作请参见设置白名单

  • 消息引擎3.8.0及以上版本。

    您可以通过控制台查看当前的消息引擎版本,如下图所示,具体操作及升级版本的注意事项,请参见升级小版本

    image

注意事项

  • Lindorm消息引擎仅支持通过专有网络访问。

  • 如果您的应用部署在ECS实例,通过专有网络访问Lindorm实例前,需确保Lindorm实例和ECS实例满足以下条件,以保证网络的连通性。

    • 所在地域相同,并建议所在可用区相同(以减少网络延时)。

    • 客户端实例与Lindorm实例属于同一专有网络。

管理Topic属性

修改Topic属性

语法

bin/kafka-configs.sh --bootstrap-server <Lindorm消息引擎Kafka地址> --alter --entity-type topics --entity-name <topic_name> --add-config <config_name>=<value> 

参数说明

参数名称

描述

Lindorm消息引擎Kafka地址

Lindorm消息引擎Kafka地址。获取Lindorm消息引擎Kafka地址,具体操作请参见访问实例

topic_name

需要修改属性的Topic名称。

config_name

Topic支持修改的属性。详情请参见Topic支持修改的属性列表

value

Topic支持修改的属性的取值。详情请参见Topic支持修改的属性列表

使用示例

修改名为test1的Topic属性(以修改retention.bytes属性为例),示例如下。

bin/kafka-configs.sh --bootstrap-server ld-bp1gt1f0ziui9****-proxy-stream.lindorm.rds.aliyuncs.com:30080 --alter --entity-type topics --entity-name test1 --add-config retention.bytes=1024

执行结果如下。

Completed updating config for topic test1.

结果验证

查看名为test1的Topic的属性(确认属性是否设置成功)。

bin/kafka-topics.sh --bootstrap-server ld-bp1gt1f0ziui9****-proxy-stream.lindorm.rds.aliyuncs.com:30080 --describe --topic test1

执行结果如下,retention.bytes已经成功设置为1024。

Topic: test1     PartitionCount: 100     ReplicationFactor: 1    Configs: retention.bytes=1024

        Topic: test1     Partition: 0    Leader: 1       Replicas: 1     Isr: 1

        Topic: test1     Partition: 1    Leader: 2       Replicas: 2     Isr: 2

        Topic: test1     Partition: 2    Leader: 1       Replicas: 1     Isr: 1

删除Topic属性

语法

bin/kafka-configs.sh --bootstrap-server <Lindorm消息引擎Kafka地址> --alter --entity-type topics --entity-name <topic_name> --delete-config <config_name> 

使用示例

删除名为test1的Topic属性,示例如下。

bin/kafka-configs.sh --bootstrap-server ld-bp1gt1f0ziui9****-proxy-stream.lindorm.rds.aliyuncs.com:30080 --alter --entity-type topics --entity-name test1 --delete-config retention.bytes

执行结果如下。

Completed updating config for topic test1.

结果验证

查看名为test1的Topic的属性(确认属性是否删除成功)。

bin/kafka-topics.sh --bootstrap-server ld-bp1gt1f0ziui9****-proxy-stream.lindorm.rds.aliyuncs.com:30080 --describe --topic test1

执行结果如下,可以看到retention.bytes已经删除。

Topic: test1     PartitionCount: 100     ReplicationFactor: 1    Configs:

        Topic: test1     Partition: 0    Leader: 1       Replicas: 1     Isr: 1

        Topic: test1     Partition: 1    Leader: 2       Replicas: 2     Isr: 2

        Topic: test1     Partition: 2    Leader: 1       Replicas: 1     Isr: 1

管理Brokers属性

说明

消息引擎仅支持设置消息引擎内的Cluster级别属性,不支持设置单个Broker级别的属性。

修改Brokers属性

语法

bin/kafka-configs.sh --bootstrap-server <Lindorm消息引擎Kafka地址> --alter --entity-type brokers --entity-default --add-config <config_name>=<value>

参数说明

参数名称

描述

Lindorm消息引擎Kafka地址

Lindorm消息引擎Kafka地址。获取Lindorm消息引擎Kafka地址,具体操作请参见访问实例

config_name

Brokers支持修改的属性。详情请参见Brokers支持修改的属性列表(消息引擎级别)

value

Brokers支持修改的属性的取值。Brokers支持修改的属性。详情请参见Brokers支持修改的属性列表(消息引擎级别)

使用示例

修改Brokers的属性(以修改log.retention.ms属性为例),示例如下。

bin/kafka-configs.sh --bootstrap-server ld-bp1gt1f0ziui9****-proxy-stream.lindorm.rds.aliyuncs.com:30080 --alter --entity-type brokers --entity-default --add-config log.retention.ms=2520000

执行结果如下。

Completed updating config for topic test1.

结果验证

查看Broker的属性

bin/kafka-configs.sh --bootstrap-server ld-bp1gt1f0ziui9****-proxy-stream.lindorm.rds.aliyuncs.com:30080 --describe --entity-type brokers --entity-default

执行结果如下。

Default configs for brokers in the cluster are:
  log.retention.ms=2520000 sensitive=false synonyms={DYNAMIC_DEFAULT_BROKER_CONFIG:log.retention.ms=2520000}

删除Brokers属性

语法

bin/kafka-configs.sh --bootstrap-server <Lindorm消息引擎Kafka地址> --alter --entity-type brokers --entity-default --delete-config <config_name>

使用示例

删除Brokers的属性,示例如下。

bin/kafka-configs.sh --bootstrap-server ld-bp1gt1f0ziui9****-proxy-stream.lindorm.rds.aliyuncs.com:30080 --entity-type brokers --entity-default --alter --delete-config log.retention.ms

执行结果如下。

Completed updating default config for brokers in the cluster.

结果验证

查看Broker属性。

bin/kafka-configs.sh --bootstrap-server ld-bp1gt1f0ziui9****-proxy-stream.lindorm.rds.aliyuncs.com:30080 --describe --entity-type brokers --entity-default

执行结果如下。

Default configs for brokers in the cluster are:

消息引擎支持修改的参数列表

Topic支持修改的属性列表

参数名称

说明

取值

默认值

compression.type

用于指定消息的压缩类型。

  • uncompressed

  • zstd

  • lz4

  • snappy

  • gzip

  • producer

默认值为producer,表示使用生产者配置中指定的压缩方式。

retention.bytes

用于设置Topic中存储的消息总大小的阈值。当主题中的消息总大小超过该阈值时,旧的消息将被删除以释放存储空间。单位:字节(Byte)。

[0 ~ Long.MAX_VALUE]

默认值为-1,表示不限制消息总大小。

retention.ms

用于设置日志段的保留时间。它指定了日志段在被删除之前需要保留的时间。单位:毫秒(ms)。

[-1 ~ Integer.MAX_VALUE]

默认值为604800000

max.message.bytes

用于限制单个消息的最大大小。指定了消息的最大字节数。单位:字节(Byte)。

[0 ~ Integer.MAX_VALUE]

默认值为1000012

cleanup.policy

用于指定Topic清理的策略。

  • compact:表示使用压缩策略进行日志清理,即将相同Key的消息合并为一条。

  • delete:表示使用删除策略进行日志清理,即直接删除过期的日志段。

默认值为delete

delete.retention.ms

用于设置删除策略下的日志段保留时间。它指定了在使用删除策略进行日志清理时,过期的日志段应保留的时间。单位:毫秒(ms)。

[0 ~ Long.MAX_VALUE]

默认值为604800000

min.cleanable.dirty.ratio

用于设置清理任务触发的阈值比例。它指定了一个比例,当日志段的删除比例低于该阈值时,Kafka将不会触发清理任务。该参数在cleanup.policy设置为compact时有效。

[0 ~ 1]

默认值为0.5,即日志段的删除比例低于50%时将不会触发清理任务。

Brokers支持修改的属性列表(消息引擎级别)

参数名称

说明

取值

默认值

delete.topic.enable

用于启用或禁用删除主题的功能。

  • true

  • false

默认值为true,即允许删除主题。

log.retention.ms

用于设置日志段的保留时间。它指定了日志段在被删除之前需要保留的时间,单位:毫秒(ms)。

[-1 ~ Integer.MAX_VALUE]

默认值为604800000

  • 本页导读 (1)