第 2 章 主题配置属性
cleanup.policytype: list
Default: delete
Valid Values: [compact, delete]
Server Default Property: log.cleanup.policy
Importance: medium
此配置指定要在日志片段中使用的保留策略。当达到保留时间或大小限制时,"删除"策略(默认)将丢弃旧的片段。"compact"策略将 启用日志压缩,它会保留每个键的最新值。也可以在逗号分隔列表中指定这两个策略(如 "delete,compact")。在这种情况下,旧片段会根据保留时间和大小配置丢弃,而保留片段将被压缩。
compression.typeType: string
Default: producer
Valid Values: [uncompressed, zstd, lz4, snappy, gzip, producer]
Server Default Property: compression.type
Importance: medium
指定给定主题的最终压缩类型。此配置接受标准压缩解码器('gzip', 'snappy', 'lz4', 'zstd')。它还接受等同于没有压缩的 'uncompressed';而 'producer' 表示保留由 producer 设置的原始压缩 codec。
delete.retention.msType: long
Default: 86400000 (1 day)
Valid Values: [0,…]
Server Default Property: log.cleaner.delete.retention.ms
Importance: medium
为日志压缩主题保留 delete tombstone 标记的时间长度。此设置也会在消费者从偏移 0 开始读取的时间绑定,以确保它们获得最终阶段的有效快照(否则,可以在完成扫描前收集该 tombstones)。
file.delete.delay.mstype: long
Default: 60000 (1 minute)
Valid Values: [0,…]
Server Default Property: log.segment.delete.delay.ms
Importance: medium
从文件系统中删除文件前等待的时间。
flush.messagestype: long
Default: 9223372036854775807
Valid Values: [1,…]
Server Default Property: log.flush.interval.messages
Importance: medium
此设置允许指定将强制写入日志的 fsync 数据的间隔。例如,如果将其设置为 1,则每个消息都会执行 fsync;如果这是 5 次,则每五个消息都会执行 fsync。通常,我们建议您不要这样做,并使用复制来实现持久性,并允许操作系统的后台清除功能,因为它效率更高。这个设置可根据每个主题覆盖(请参阅 每个主题配置部分)。
flush.mstype: long
Default: 9223372036854775807
Valid Values: [0,…]
Server Default Property: log.flush.interval.ms
Importance: medium
此设置允许指定将强制写入日志的 fsync 数据的时间间隔。例如,如果将其设置为 1000,则在 1000 毫秒被传递后将 fsync。通常,我们建议您不要这样做,并使用复制来实现持久性,并允许操作系统的后台清除功能,因为它效率更高。
follower.replication.throttled.replicastype: list
Default: ""
Valid Values: [partitionId]:[brokerId],[partitionId]:[brokerId],…
Server Default Property: null
Importance: medium
应该在后续端节流日志复制的副本列表。该列表应该以 [PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:… 或者通配符 '*' 来节流这个主题的所有副本。
index.interval.bytestype: int
Default: 4096 (4 kibibytes)
Valid Values: [0,…]
Server Default Property: log.index.interval.bytes
Importance: medium
此设置控制 Kafka 在偏移索引中添加索引条目的频率。默认设置可确保我们索引一个大约每 4096 字节的消息。通过更多索引,读取可以更接近日志中的确切位置,但使索引变大。您可能不需要更改此设置。
leader.replication.throttled.replicastype: list
Default: ""
Valid Values: [partitionId]:[brokerId],[partitionId]:[brokerId],…
Server Default Property: null
Importance: medium
日志复制应节流到领导端的副本列表。该列表应该以 [PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:… 或者通配符 '*' 来节流这个主题的所有副本。
local.retention.bytestype: long
Default: -2
Valid Values: [-2,…]
Server Default Property: log.local.retention.bytes
Importance: medium
在删除旧片段前,可以为分区增大的本地日志片段的最大大小。默认值为 -2,它代表要使用的
retention.bytes值。有效的值应始终小于或等于retention.bytes值。local.retention.mstype: long
Default: -2
Valid Values: [-2,…]
Server Default Property: log.local.retention.ms
Importance: medium
在删除本地日志段前保留本地日志段的 milli 秒数量。默认值为 -2,它代表使用
retention.ms值。有效的值应始终小于或等于retention.ms值。max.compaction.lag.mstype: long
Default: 9223372036854775807
Valid Values: [1,…]
Server Default Property: log.cleaner.max.compaction.lag.ms
Importance: medium
消息在日志中保留无法压缩的最长时间。仅适用于被压缩的日志。
max.message.bytestype: int
Default: 1048588
Valid Values: [0,…]
Server Default Property: message.max.bytes
Importance: medium
Kafka 允许的最大记录批处理大小(如果启用了压缩,在压缩后进行压缩)。如果这被增加,且有 0.10.2 旧的消费者,还必须增加用户的获取大小,以便他们可以获取记录批处理。在最新的消息格式版本中,记录始终分组到批处理中,以获得效率。在以前的消息格式版本中,未压缩记录没有分组到批处理中,在这种情况下,这个限制只适用于单个记录。
message.format.versionType: string
Default: 3.0-IV1
Valid Values: [0.8.0, 0.8.1, 0.8.2, 0.9.0, 0.10.0-IV0, 0.10.0-IV1, 0.10.1-IV0, 0.10.1-IV1, 0.10.1-IV2, 0.10.2-IV0, 0.11.0-IV0, 0.11.0-IV1, 0.11.0-IV2, 1.0-IV0, 1.1-IV0, 1.1-IV0, 1.1-IV0, 2.0-iv0, 2.0-iv1, 2.1-iv0, 2.1-iv1, 2.1-iv2, 2.2-iv0, 2.2-iv1, 2.3-iv0, 2.3-iv1, 2.4-iv0, 2.4-iv1, 2.5-iv0, 2.6-iv0, 2.7-iv0, 2.7-iv1, 2.7-iv2, 2.8-iv0, 2.8-iv1, 3.0-iv0, 3.0-iv1, 3.0-iv0, 3.0-iv1, 3.1-IV0, 3.2-IV0, 3.3-IV0, 3.3-IV1, 3.3-IV2, 3.3-IV3, 3.4-IV0, 3.5-IV0, 3.5-IV1, 3.5-IV2, 3.6-IV0, 3.6-IV2, 3.6-IV2]
Server Default Property: log.message.format.version
Importance: medium
[DEPRECATED] 指定代理用来将消息附加到日志中的消息格式版本。如果
inter.broker.protocol.version为3.0或更高版本(实际配置值将被忽略),则始终假定此配置的值为 3.0。否则,该值应该是有效的 ApiVersion。一些示例包括: 0.10.0、1.1、2.8、3.0。通过设置特定的消息格式版本,用户认证磁盘上所有现有的消息是否都小于或等于指定版本。错误地设置这个值将导致具有旧版本的用户中断,因为它们会收到一个不理解的格式的消息。message.timestamp.after.max.mstype: long
Default: 9223372036854775807
Valid Values: [0,…]
Server Default Property: log.message.timestamp.after.max.ms
Importance: medium
此配置设定了消息时间戳和代理时间戳之间的允许时间戳差异。消息时间戳可能高于代理的时间戳,最大允许差别由此配置中设置的值决定。如果 message.timestamp.type=CreateTime,如果时间戳的差异超过这个指定的阈值,则消息将被拒绝。如果 message.timestamp.type=LogAppendTime,则忽略此配置。
message.timestamp.before.max.mstype: long
Default: 9223372036854775807
Valid Values: [0,…]
Server Default Property: log.message.timestamp.before.max.ms
Importance: medium
此配置设定了代理的时间戳和消息时间戳之间的允许时间戳差异。消息时间戳可以早于或等于代理的时间戳,其最大允许区别由此配置中设置的值决定。如果 message.timestamp.type=CreateTime,如果时间戳的差异超过这个指定的阈值,则消息将被拒绝。如果 message.timestamp.type=LogAppendTime,则忽略此配置。
message.timestamp.difference.max.mstype: long
Default: 9223372036854775807
Valid Values: [0,…]
Server Default Property: log.message.timestamp.difference.max.ms
Importance: medium
[DEPRECATED] 代理收到消息和消息中指定的时间戳之间允许的最大区别。如果 message.timestamp.type=CreateTime,如果时间戳的差异超过这个阈值,则会拒绝一条消息。如果 message.timestamp.type=LogAppendTime,则忽略此配置。
message.timestamp.typetype : string
Default: CreateTime
Valid Values: [CreateTime, LogAppendTime]
Server Default Property: log.message.timestamp.type
Importance: medium
定义消息中的时间戳是消息创建时间还是日志附加时间。该值应该是
CreateTime或LogAppendTime。min.cleanable.dirty.ratiotype: double
Default: 0.5
Valid Values: [0,…,1]
Server Default Property: log.cleaner.min.cleanable.ratio
Importance: medium
此配置控制日志压缩器将尝试清理日志的频率(假设启用了 日志压缩 )。默认情况下,我们将避免清理日志超过 50% 的日志。这种比例使日志空间达到最大的空间(50% 最多 50% 的日志重复)。较高的比率将意味着较小的、效率更高,但意味着日志中有更多空间。如果还指定了 max.compaction.lag.ms 或 min.compaction.lag.ms 配置,则日志紧凑器会认为日志在 min.compaction.lag.ms 期间立即有资格进行压缩:(i)脏比率阈值,并且日志至少有 min.compaction.lag.ms 持续时间的脏(未紧凑)记录, 或(ii)如果日志在 max.compaction.lag.ms 期间内有脏(uncompacted)记录。
min.compaction.lag.mstype: long
Default: 0
Valid Values: [0,…]
Server Default Property: log.cleaner.min.compaction.lag.ms
Importance: medium
消息在日志中保持 uncompacted 的最短时间。仅适用于被压缩的日志。
min.insync.replicastype: int
Default: 1
Valid Values: [1,…]
Server Default Property: min.insync.replicas
Importance: medium
当制作者将 acks 设为 "all" (或 "-1"),此配置指定了必须确认写入的最小副本数才被视为成功。如果无法满足此最小值,则生成者将引发异常(NotEnoughReplicas 或 NotEnoughReplicasAfterAppend)。当一起使用时,
min.insync.replicas和acks允许您强制实施更大的持久性保证。典型的场景是创建包含复制原因 3 的主题,将min.insync.replicas设置为 2,并使用acksof "all" 生成。这将确保如果大多数副本都未收到写入,则生成者引发异常。preallocatetype: boolean
Default: false
Server Default Property: log.preallocate
Importance: medium
如果我们在创建新日志段时,应该预先在磁盘上分配该文件则为 true。
remote.storage.enableType: boolean
Default: false
Server Default Property: null
Importance: medium
要为主题启用分层存储,请将此配置设置为 true。启用后,您无法禁用此配置。它将在以后的版本中提供。
retention.bytestype: long
Default: -1
Server Default Property: log.retention.bytes
Importance: medium
此配置控制分区(由日志片段组成的)在我们使用"删除"保留策略时丢弃旧日志片段以释放空间的最大大小。默认情况下,只有时间限制没有大小限制。由于这个限制在分区级别强制实施,因此乘以分区数量来计算主题保留(以字节为单位)。
retention.msType: long
Default: 604800000 (7 days)
Valid Values: [-1,…]
Server Default Property: log.retention.ms
Importance: medium
此配置控制在我们使用"删除"保留策略之前,我们将保留日志段的最长时间,以释放空间。这代表了 SLA,即消费者必须多久才能读取其数据。如果设置为 -1,则不会应用时间限制。
segment.bytestype: int
Default: 1073741824 (1 gibibyte)
Valid Values: [14,…]
Server Default Property: log.segment.bytes
Importance: medium
此配置控制日志的片段文件大小。保留和清理始终会一次完成一个文件,因此大的片段大小意味着较少的文件,但对保留进行精细的控制。
segment.index.bytestype: int
Default: 10485760 (10 mebibytes)
Valid Values: [4,…]
Server Default Property: log.index.size.max.bytes
Importance: medium
此配置控制将偏移映射到文件位置的索引大小。我们预先分配此索引文件,并仅在日志滚动后缩小它。您通常不需要更改此设置。
segment.jitter.mstype: long
Default: 0
Valid Values: [0,…]
Server Default Property: log.roll.jitter.ms
Importance: medium
从调度的网段滚动时间中减去的最大随机 jitter,以避免理解网段滚动的混乱。
segment.msType: long
Default: 604800000 (7 days)
Valid Values: [1,…]
Server Default Property: log.roll.ms
Importance: medium
此配置控制 Kafka 将强制日志回滚的时间周期,即使片段文件没有满,以确保保留可以删除或压缩旧数据。
unclean.leader.election.enabletype: boolean
Default: false
Server Default Property: unclean.leader.election.enable
Importance: medium
指明是否启用 ISR 集中的副本作为最后的手段,即使这样做可能会导致数据丢失。
message.downconversion.enabletype: boolean
Default: true
Server Default Property: log.message.downconversion.enable
Importance: low
此配置控制消息格式的下行是否启用以满足使用请求的使用。当设置为
false时,代理不会为希望旧的消息格式的消费者执行 down-conversion。对于来自较旧的客户端的消费请求,代理会以UNSUPPORTED_VERSION错误响应。此配置不适用于复制可能需要的任何消息格式转换。