Skip to main content

配置

本文旨在解释 AutoMQ 部署过程中涉及的配置参数,包括配置定义、描述、设置范围和规范等,以帮助开发者在生产环境中进行必要的自定义调整。

AutoMQ 是存算分离版的 Apache Kafka,所以支持 Apache Kafka 除多副本存储之外的所有的参数,这部分参数本文档并未列出,可参考官方配置文档

公共配置

elasticstream.enable

列表项
说明
配置描述
是否启动 AutoMQ,该参数必须设置为 true。
值类型
boolean
默认值
false
合法输入范围
N/A
重要级别
高,需要谨慎配置

s3.endpoint

列表项
说明
配置描述
对象存储的接入点地址。例如: https://s3.{region}.amazonaws.com。
值类型
string
默认值
null
合法输入范围
N/A
重要级别
高,需要谨慎配置

s3.region

列表项
说明
配置描述
对象存储服务的的地域标识,参考云厂商文档,例如 us-east-1。
值类型
string
默认值
null
合法输入范围
N/A
重要级别
高,需要谨慎配置

s3.bucket

列表项
说明
配置描述
对象存储 bucket,用于保存消息。
值类型
string
默认值
null
合法输入范围
N/A
重要级别
高,需要谨慎配置

s3.path.style

列表项
说明
配置描述
是否启用对象存储路径格式。当使用 MinIO 作为存储服务时,必须设置为 true。
值类型
boolean
默认值
false
合法输入范围
N/A
重要级别
高,需要谨慎配置

S3Stream 相关配置

s3.wal.path

列表项
说明
配置描述
用于存储本地 WAL 的块存储设备挂载路径,例如 /dev/xxx 或者其他路径。
值类型
string
默认值
null
合法输入范围
N/A
重要级别
高,需要谨慎配置

s3.wal.capacity

列表项
说明
配置描述
AutoMQ 的本地 WAL(Write-Ahead Logging)的大小。该配置决定了在数据上传到对象存储之前,可以写入缓冲区的最大数据量。更大的容量可以容忍对象存储中更多的写入抖动。
值类型
long,单位为 byte
默认值
2147483648
合法输入范围
[10485760, ...]
重要级别
低,设置相对宽泛

s3.wal.cache.size

列表项
说明
配置描述
WAL(预写日志)缓存是一个FIFO(先进先出)队列,其中包含尚未上传到对象存储的数据,以及已经上传但尚未从缓存中逐出的数据。当尚未上传的缓存数据填满整个容量时,存储将会对后续请求产生回压,直到完成数据上传。默认情况下,它会根据内存设置一个合理的值。
值类型
long,单位为 byte
默认值
-1,由程序自动设置合适的参数值
合法输入范围
[1, ...]
重要级别
低,设置相对宽泛

s3.wal.iops

列表项
说明
配置描述
数据在写入 WAL 时,会进行攒批,以一定的频率持久化写入到 WAL 盘当中。该配置项决定了数据写入 WAL 的频次,配置值越高,每秒写入次数增多,延迟减少。然而,各种块设备的 IOPS 性能各不相同,如果设定值超出了设备 IOPS 的上限,可能会由于排队引起延迟增高。
值类型
int,单位为 iops
默认值
3000
合法输入范围
[1, ...]
重要级别
高,建议设置为 WAL 盘实际可用的 IOPS 数值

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.stream.set.object.compaction.max.num

列表项
说明
配置描述
一次最多可以压缩的 stream set object 的数量。
值类型
int
默认值
500
合法输入范围
[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.enable

列表项
说明
配置描述
是否开启 OTel metrics exporter。
值类型
boolean
默认值
true
合法输入范围
true, false
重要级别
低,设置相对宽泛

s3.telemetry.metrics.level

列表项
说明
配置描述
设置记录 Metrics 的级别。
"INFO"级别包括大多数用户应该关心的指标,例如常见流操作的吞吐量和延迟。"DEBUG"级别包括有助于诊断的详细指标,例如写入底层块设备时不同阶段的延迟。
值类型
string
默认值
INFO
合法输入范围
INFO, DEBUG
重要级别
低,设置相对宽泛

s3.telemetry.metrics.exporter.type

列表项
说明
配置描述
Metrics exporter 类型列表:
  • "otlp"类型将使用OTLP协议将度量导出到后端服务。
  • "prometheus"类型将启动一个内置的HTTP服务器,允许Prometheus后端从中抓取度量。
值类型
list
默认值
null
合法输入范围
otlp, prometheus
重要级别
低,设置相对宽泛

s3.telemetry.exporter.report.interval.ms

列表项
说明
配置描述
设置 Metrics 导出的时间间隔。
值类型
int,单位是毫秒
默认值
30000
合法输入范围
N/A
重要级别
低,设置相对宽泛

s3.telemetry.exporter.otlp.protocol

列表项
说明
配置描述
OTLP exporter 使用的传输协议。
值类型
string
默认值
grpc
合法输入范围
grpc, http
重要级别
低,设置相对宽泛

s3.telemetry.exporter.otlp.endpoint

列表项
说明
配置描述
使用 OTLP Exporter 时,后端服务暴露的地址。
值类型
string
默认值
null
合法输入范围
N/A
重要级别
低,设置相对宽泛

s3.telemetry.exporter.otlp.compression.enable

列表项
说明
配置描述
OTLP exporter 是否启用数据压缩,如果开启,OTLP 会使用 gzip 压缩算法压缩 Metrics。
值类型
boolean
默认值
false
合法输入范围
true, false
重要级别
低,设置相对宽泛

s3.metrics.exporter.prom.host

列表项
说明
配置描述
用于透出 OTel Metrics 的内置 Prometheus HTTP server 地址。
值类型
string
默认值
null
合法输入范围
N/A
重要级别
低,设置相对宽泛

s3.metrics.exporter.prom.port

列表项
说明
配置描述
用于透出 OTel Metrics 的内置 Prometheus HTTP server 端口。
值类型
int
默认值
0
合法输入范围
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.metrics.delay.ms

列表项
说明
配置描述
当 Controller 执行负载均衡时,如果broker的最新 Metrics 延迟超过了配置的值,那么broker将因为其同步状态滞后而被排除。这个配置不应该小于broker metrics 报告的间隔。
值类型
long,单位是毫秒
默认值
60000
合法输入范围
[1, ...]
重要级别
高,需要谨慎配置

autobalancer.controller.goals

列表项
说明
配置描述
重平衡优化的目标设置。
值类型
list
默认值
kafka.autobalancer.goals.NetworkInUsageDistributionGoal,kafka.autobalancer.goals.NetworkOutUsageDistributionGoal
合法输入范围
N/A
重要级别
高,需要谨慎配置

autobalancer.controller.network.in.usage.distribution.detect.threshold

列表项
说明
配置描述
NetworkInUsageDistributionGoal的检测阈值。如果一个 broker 的写入带宽低于这个配置值,那么这个broker将不会被主动安排进行重平衡。
值类型
long,单位是 byte/s
默认值
1048576
合法输入范围
[1, ...]
重要级别
高,需要谨慎配置

autobalancer.controller.network.out.usage.distribution.detect.threshold

列表项
说明
配置描述
NetworkOutUsageDistributionGoal的检测阈值。如果一个 broker 的读取带宽低于这个配置值,那么这个broker将不会被主动安排进行重平衡。
值类型
long,单位是 byte/s
默认值
1048576
合法输入范围
[1, ...]
重要级别
高,需要谨慎配置

autobalancer.controller.network.in.distribution.detect.avg.deviation

列表项
说明
配置描述
这个配置项定义了平均写入带宽的可接受偏差范围。默认值为0.2,这意味着预期的网络流量范围将是[0.8 * loadAvg, 1.2 * loadAvg]
值类型
double
默认值
0.2
合法输入范围
N/A
重要级别
高,需要谨慎配置

autobalancer.controller.network.out.distribution.detect.avg.deviation

列表项
说明
配置描述
这个配置项定义了平均读取带宽的可接受偏差范围。默认值为0.2,这意味着预期的网络流量范围将是[0.8 * loadAvg, 1.2 * loadAvg]
值类型
double
默认值
0.2
合法输入范围
N/A
重要级别
高,需要谨慎配置

autobalancer.controller.exclude.topics

列表项
说明
配置描述
需要排除,不进行数据重平衡的 Topic 列表。
值类型
list
默认值
""
合法输入范围
N/A
重要级别
高,需要谨慎配置

autobalancer.controller.exclude.broker.ids

列表项
说明
配置描述
需要排除,不进行数据重平衡的 Broker Id 列表。
值类型
list
默认值
""
合法输入范围
N/A
重要级别
高,需要谨慎配置