Broker 和 Controller 配置
本文旨在解释 AutoMQ 部署过程中涉及的配置参数,包括配置定义、描述、设置范围和规范等,以帮助开发者在生产环境中进行必要的自定义调整。
AutoMQ 基于对象存储实现了存储计算分离,完全兼容 Apache Kafka,因此关于 Kafka 的功能配置(例如 ACL、网络等)均可以参考官方配置文档。本文档仅列举 AutoMQ 新增的存储模块相关的配置参数。
公共配置
elasticstream.enable
列表项 | 说明 |
---|---|
配置描述 | 是否启动 AutoMQ,该参数必须设置为 true。 |
值类型 | boolean |
默认值 | false |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.zonerouter.channels
通过开启跨可用区请求路由功能,减少跨可用区数据传输,减少流量成本。该功能详情请参考 概述▸ 。
列表项 | 说明 |
---|---|
配置描述 | 跨可用区的 channel 配置,通过配置跨可用区路由组件可极大减少跨 zone 流量带来的成本。目前只支持对象存储,格式是:0@s3://$bucket?region=$region[&batchInterval=250][&maxBytesInBatch=8388608] |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
S3Stream 相关配置
s3.data.buckets
列表项 | 说明 |
---|---|
配置描述 | 数据面对象存储的URI。格式是:0@s3://$bucket?region=$region[&endpoint=$endpoint][&pathStyle=$enablePathStyle][&authType=$authType][&accessKey=$accessKey][&secretKey=$secretKey][&checksumAlgorithm=$checksumAlgorithm]。 不同厂商配置参见:对象存储配置▸。 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
s3.ops.buckets
列表项 | 说明 |
---|---|
配置描述 | 控制面对象存储的URI。格式是:1@s3://$bucket?region=$region[&endpoint=$endpoint][&pathStyle=$enablePathStyle][&authType=$authType][&accessKey=$accessKey][&secretKey=$secretKey][&checksumAlgorithm=$checksumAlgorithm]。 不同厂商配置参见:对象存储配置▸ 。 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
s3.wal.path
列表项 | 说明 |
---|---|
配置描述 | 用于存储本地 WAL 的块存储设备挂载路径,格式是: 0@s3://$bucket?region=$region[&batchInterval=250][&maxBytesInBatch=8388608] 不同厂商参见:对象存储配置▸ |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
s3.wal.cache.size
列表项 | 说明 |
---|---|
配置描述 | WAL(预写日志)缓存是一个FIFO(先进先出)队列,其中包含尚未上传到对象存储的数据,以及已经上传但尚未从缓存中逐出的数据。当尚未上传的缓存数据填满整个容量时,存储将会对后续请求产生回压,直到完成数据上传。默认情况下,它会根据内存设置一个合理的值。 |
值类型 | long,单位为 byte |
默认值 | -1,由程序自动设置合适的参数值 |
合法输入范围 | [1, ...] |
重要级别 | 低,设置相对宽泛 |
s3.wal.upload.threshold
列表项 | 说明 |
---|---|
配置描述 | 触发 WAL 向对象存储上传的阈值。配置值需要小于 s3.wal.cache.size 。配置值越大,数据聚合度越高,元数据存储的成本越低。默认情况下,它会根据内存设置一个合理的值。 |
值类型 | long,单位为 byte |
默认值 | -1,由程序自动设置合适的参数值 |
合法输入范围 | [1, ...] |
重要级别 | 低,设置相对宽泛 |
s3.block.cache.size
列表项 | 说明 |
---|---|
配置描述 | s3.block.cache.size 是 block cache 的大小。block cache 用于缓存从对象存储读取的冷数据。建议将此配置项设置为大于 4MB * 每个分区的并发冷读数,以实现更好的冷读性能。默认情况下,它会根据内存设置一个合理的值。 |
值类型 | long,单位为 byte |
默认值 | -1,由程序自动设置合适的参数值 |
合法输入范围 | [1, ...] |
重要级别 | 低,设置相对宽泛 |
s3.stream.object.compaction.interval.minutes
列表项 | 说明 |
---|---|
配置描述 | Stream object 进行 compaction 的间隔周期。间隔越大,API调用的成本越低,但它增加了元数据存储的规模。 |
值类型 | int,单位是分钟 |
默认值 | 30 |
合法输入范围 | [1, ...] |
重要级别 | 低,设置相对宽泛 |
s3.stream.object.compaction.max.size.bytes
列表项 | 说明 |
---|---|
配置描述 | Stream object compaction 允许合成的对象的最大大小。这个值越大,API调用的成本越高,但元数据存储的规模越小。 |
值类型 | long,单位为 byte |
默认值 | 1073741824 |
合法输入范围 | [1, ...] |
重要级别 | 低,设置相对宽泛 |
s3.stream.set.object.compaction.interval.minutes
列表项 | 说明 |
---|---|
配置描述 | 设置 stream object compaction 的间隔。这个值越小,元数据存储的规模就越小,数据变得紧凑的时间也会更早。然而,最终生成的流对象经历的压缩次数会增加。 |
值类型 | int,单位是分钟 |
默认值 | 20 |
合法输入范围 | [1, ...] |
重要级别 | 低,设置相对宽泛 |
s3.stream.set.object.compaction.cache.size
列表项 | 说明 |
---|---|
配置描述 | 在 stream object compaction 过程中可用的内存大小。这个值越大,API调用的成本越低。 |
值类型 | long,单位是 byte |
默认值 | 209715200 |
合法输入范围 | [1048576, ...] |
重要级别 | 低,设置相对宽泛 |
s3.stream.set.object.compaction.stream.split.size
列表项 | 说明 |
---|---|
配置描述 | 在 Stream object compaction 过程中,如果单个 Stream 中的数据量超过此阈值,这个 Stream 的数据将直接被分割并写入单个 Stream 对象。这个值越小,数据从 Stream set object 中分割的时间就越早,Stream object compaction 的后续 API 调用成本就越低,但是分割的 API 调用成本就越高。 |
值类型 | long,单位为 byte |
默认值 | 8388608 |
合法输入范围 | [1, ...] |
重要级别 | 低,设置相对宽泛 |
s3.network.baseline.bandwidth
列表项 | 说明 |
---|---|
配置描述 | 对象存储请求的总可用带宽。这是用来防止 stream set object compaction 和追赶读取占据正常读写流量。生产和消费也会分别消耗进出流量。 例如,假设这个值设置为100MB/s,而正 常的读写流量是80MB/s,那么用于 stream set object compaction 的可用流量就是 20MB/s。 |
值类型 | long,单位为 byte/s |
默认值 | 104857600 |
合法输入范围 | [1, ...] |
重要级别 | 低,设置相对宽泛 |
s3.stream.allocator.policy
列表项 | 说明 |
---|---|
配置描述 | S3Stream 内存分配器策略。请注意,当配置为使用DIRECT内存时,需要修改虚拟机选项中的堆大小(例如,-Xmx)和直接内存大小(例如,-XX:MaxDirectMemorySize)。您可以通过环境变量KAFKA_HEAP_OPTS来设置它们。 |
值类型 | string |
默认值 | POOLED_HEAP |
合法输入范围 | POOLED_HEAP, POOLED_DIRECT |
重要级别 | 低,设置相对宽泛 |
s3.telemetry.metrics.level
列表项 | 说明 |
---|---|
配置描述 | 设置记录 Metrics 的级别。 "INFO"级别包括大多数用户应该关心的指标,例如常见流操作的吞吐量和延迟。"DEBUG"级别包括有助于诊断的详细指标,例如写入底层块设备时不同阶段的延迟。 |
值类型 | string |
默认值 | INFO |
合法输入范围 | INFO, DEBUG |
重要级别 | 低,设置相对宽泛 |
s3.telemetry.exporter.report.interval.ms
列表项 | 说明 |
---|---|
配置描述 | 设置 Metrics 导出的时间间隔。 |
值类型 | int,单位是毫秒 |
默认值 | 30000 |
合法输入范围 | N/A |
重要级别 | 低,设置相对宽泛 |
s3.telemetry.metrics.base.labels
列表项 | 说明 |
---|---|
配置描述 | Metrics 的多维标签,用于为所有监控指标附加静态的多维度标签,实现指标的分类、聚合与精细化分析。格式是:key1=value1,key2=value2。 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 中,需要谨慎配置 |
s3.telemetry.metrics.exporter.uri
列表项 | 说明 |
---|---|
配置描述 | Metrics 的导出uri。格式是:$type://?$param1=$value1&$param2=$value2。目前type支持的类型有prometheus, otlp。 prometheus的格式:prometheus://?host=$hostname&port=$port otlp的格式:otlp://?endpoint=$endpoint&protocol=$protocol&compression=$compression |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
持续数据重平衡配置
metric.reporters
列表项 | 说明 |
---|---|
配置描述 | metrics reporters 的类列表。实现 org.apache.kafka.common.metrics.MetricsReporter 接口可以实现动态加载新的 Metrics。 JmxReporter 总是被包含在内,以注册JMX统计信息。要启用自动平衡(AutoBalancing), metric.reporters 必须包含 kafka.autobalancer.metricsreporter.AutoBalancerMetricsReporter 。 |
值类型 | list |
默认值 | "" |
合法输入范围 | N/A |
重要级别 | 低,设置相对宽泛 |
autobalancer.reporter.metrics.reporting.interval.ms
列表项 | 说明 |
---|---|
配置描述 | Metrics Reporter 上报数据的间隔。 |
值类型 | long,单位是毫秒 |
默认值 | 10000 |
合法输入范围 | [1000, ...] |
重要级别 | 高,需要谨慎配置 |
autobalancer.controller.enable
列表项 | 说明 |
---|---|
配置描述 | 是否启用自动重平衡。 |
值类型 | boolean |
默认值 | false |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
autobalancer.controller.anomaly.detect.interval.ms
列表项 | 说明 |
---|---|
配置描述 | Controller 检查是否需要进行数据重平衡的最小间隔。下一次重平衡的实际时间也取决于已经被重新分配的分区的数量。降低最小检查间隔可以提高数据重新平衡的灵敏度。该值应大于 broker metrics的上报间隔,以防止控制器错过最近重新分配的结果。 |
值类型 | long,单位是毫秒 |
默认值 | 60000 |
合法输入范围 | [1, ...] |
重要级别 | 高,需要谨慎配置 |
autobalancer.controller.exclude.topics
列表项 | 说明 |
---|---|
配置描述 | 需要排除,不进行数据重平衡的 Topic 列表。 |
值类型 | list |
默认值 | "" |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
autobalancer.controller.exclude.broker.ids
列表项 | 说明 |
---|---|
配置描述 | 需要排除,不进行数据重平衡的 Broker Id 列表。 |
值类型 | list |
默认值 | "" |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
Table Topic
Table Topic 是 AutoMQ 面向现代数据湖架构设计的核心功能,其核心作用在于实现流式数据与静态数据湖的无缝集成,通过架构创新解决传统流批分离、ETL 复杂、成本高昂等问题。详情请参见 概述▸ 。
automq.table.topic.enable
列表项 | 说明 |
---|---|
配置描述 | 是否启用 AutoMQ Table Topic。启用后将创建 Iceberg Table,用于存储 AutoMQ Table 数据。 |
值类型 | boolean |
默认值 | false |
合法输入 范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.commit.interval.ms
列表项 | 说明 |
---|---|
配置描述 | Table Topic 的数据提交间隔时间。提交间隔越短,数据实时性越高,相应的处理成本也会增加,反之亦然。 |
值类型 | long |
默认值 | 300000,单位ms |
合法输入范围 | 整整数 |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.upsert.enable
列表项 | 说明 |
---|---|
配置描述 | 是否启用 Table Topic 的 Upsert 功能。开启后,系统会根据主键自动判断是插入新记录还是更新已有记录。 |
值类型 | boolean |
默认值 | false |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.partition.by
列表项 | 说明 |
---|---|
配置描述 | 定义 Table Topic 的分区规则,通过字段或函数对数据进行分区。 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.id.columns
列表项 | 说明 |
---|---|
配置描述 | 指定表的唯一主键列。 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.cdc.field
列表项 | 说明 |
---|---|
配置描述 | 指定记录 CDC(Change Data Capture)操作类型的字段名称。用于标识数据库变更操作类型,值为单个字符 I 、 U 或 D ,分别对应数据的插入、更新和删除动作。 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.schema.type
列表项 | 说明 |
---|---|
配置描述 | schema类型。支持两种模式: schemaless (不解析消息内容)和 schema (需在 schema registry 预定义消息 value 的 Schema,并根据该 Schema 写入到 Iceberg 中)。 |
值类型 | string |
默认值 | schemaless |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.namespace
列表项 | 说明 |
---|---|
配置描述 | Table topic 的命名空间 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.schema.registry.url
列表项 | 说明 |
---|---|
配置描述 | Schema Registry 的服务地址 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.catalog.type
列表项 | 说明 |
---|---|
配置描述 | 指定 Catalog 的类型,目前支持rest、glue、nessie、tablebucket、hive五种类型 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
AutoMQ Table Topic 支持多种 Iceberg Catalog 类型,不同类型需要配置不同的参数。详情参见:
rest
automq.table.topic.catalog.uri
列表项 | 说明 |
---|---|
配置描述 | 指定 Iceberg REST Catalog 服务地址 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.catalog.warehouse
列表项 | 说明 |
---|---|
配置描述 | 指定 Catalog 仓库的 S3 路径 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.catalog.oauth2-server-uri
列表项 | 说明 |
---|---|
配置描述 | 指定 oauth 认证服务地址 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 可选 |
automq.table.topic.catalog.credential
列表项 | 说明 |
---|---|
配置描述 | 指定 Catalog 的证书 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 可选 |
automq.table.topic.catalog.token
列表项 | 说明 |
---|---|
配置描述 | 指定 Catalog 的 token |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 可选 |
automq.table.topic.catalog.scope
列表项 | 说明 |
---|---|
配置描述 | 指定 Catalog 认证范围 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 可选 |
glue
automq.table.topic.catalog.warehouse
列表项 | 说明 |
---|---|
配置描述 | 指定 Iceberg 仓库的 S3 路径 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
nessie
automq.table.topic.catalog.uri
列表项 | 说明 |
---|---|
配置描述 | 指定 Iceberg Catalog 服务地址 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.catalog.warehouse
列表项 | 说明 |
---|---|
配置描述 | 指定 Iceberg 仓库的 S3 路径 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
tablebucket
automq.table.topic.catalog.warehouse
列表项 | 说明 |
---|---|
配置描述 | 指定 Iceberg 仓库的 S3 路径 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
hive
automq.table.topic.catalog.uri
列表项 | 说明 |
---|---|
配置描述 | 指定 Iceberg Catalog 服务地址 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.catalog.warehouse
列表项 | 说明 |
---|---|
配置描述 | 指定 Iceberg 仓库的 S3 路径 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 高,需要谨慎配置 |
automq.table.topic.catalog.auth
列表项 | 说明 |
---|---|
配置描述 | 指定 Catalog 认证服务地址 |
值类型 | string |
默认值 | null |
合法输入范围 | N/A |
重要级别 | 可选 |