前面我们了解完broker的配置,现在我们来看下topic的配置:

1.cleanup.policy
字符串要么是“delete”,要么是“compact”,或者两者都是。此配置指定在旧日志段上使用的保留策略。默认策略(“delete”)将在达到保留时间或大小限制时丢弃旧段。“compact”设置将启用topic上的日志压缩。服务器提供的默认配置是log.cleanup.policy

2.compression.type
指定给定topic的最终压缩类型。该配置接受标准的压缩编解码器('gzip'、'snappy'、'lz4'、'zstd')。它另外接受“uncompressed”,这相当于没有压缩;和“producer”,即保留由生产者设置的原始压缩编解码器。服务器提供的默认配置是compression.type

3.delete.retention.ms
为日志压缩主题保留删除tombstone标记的时间,默认86400000毫秒,即24小时。这个设置还提供了一个时间的限制如果消费者从偏移量0开始,他们必须在这个时间内完成读取,以确保他们获得最后阶段的有效快照(否则删除tombstones可能会在他们完成扫描之前被收集)。服务器提供的默认配置是log.cleaner.delete.retention.ms

4.file.delete.delay.ms
从文件系统中删除文件之前等待的时间,默认60000毫秒。服务器提供的默认配置是log.segment.delete.delay.ms

5.flush.messages
此设置允许指定一个时间间隔,在该时间间隔,我们将强制将fsync数据写入日志,默认9223372036854775807。例如,如果这个被设为1我们会在每条消息后进行fsync;如果是5,我们会在每5条消息后进行fsync。一般来说,我们建议您不要设置这个值,而是使用复制来保证持久性,并允许操作系统的后台刷新功能,因为这样更有效。可以根据每个topic重写此设置。服务器提供的默认配置是log.flush.interval.messages

6.flush.ms
此设置允许指定一个时间间隔,在这个时间间隔,我们将强制将fsync数据写入日志,默认9223372036854775807。例如,如果这个值设置为1000,我们将在1000毫秒之后进行fsync。一般来说,我们建议您不要设置这个值,而是使用复制来保证持久性,并允许操作系统的后台刷新功能,因为这样更有效。服务器提供的默认配置是log.flush.interval.ms

7.follower.replication.throttled.replicas
应该在follower端对其日志复制进行限制的副本列表。该列表应该以[PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:…或者也可以使用通配符'*'来限制此主题的所有副本。服务器提供的默认配置是follower.replication.throttled.replicas

8.index.interval.bytes
此设置控制Kafka向其偏移索引添加索引条目的频率。默认设置确保我们大约每4096bytes索引一条消息。更多的索引允许读取更接近日志中的确切位置,但使索引更大。一般情况下我们不需要改变这个默认配置。服务器提供的默认配置是log.index.interval.bytes

9.leader.replication.throttled.replicas
一个副本列表,它的日志复制应该在leader端被限制。该列表应该以[PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:…或者,也可以使用通配符'*'来限制此主题的所有副本。服务器提供的默认配置是leader.replication.throttled.replicas

10.max.compaction.lag.ms
消息在日志中不符合压缩条件的最长时间,默认9223372036854775807。仅适用于正在压缩的日志。服务器提供的默认配置是log.cleaner.max.compaction.lag.ms

11.max.message.bytes
Kafka允许的最大记录批大小(如果启用压缩,则在压缩之后),默认1048588bytes,即1M。如果增加这个值,并且有版本小于0.10.2的consumer,那么consumer的获取大小也必须增加,以便他们能够获取这么大的记录批。在最新的消息格式版本中,为了提高效率,记录总是分组成批。在以前的消息格式版本中,未压缩的记录不会分组成批,在这种情况下,此限制仅适用于单个记录。服务器提供的默认配置是message.max.bytes

12.message.format.version
指定broker将用于向日志追加消息的消息格式版本,该值应该是一个有效的ApiVersion,默认2.5-IV0。通过设置特定的消息格式版本,用户可以确认磁盘上现有的所有消息都小于或等于指定的版本。不正确地设置此值将导致使用旧版本的用户崩溃,因为他们将接收到他们不理解的格式的消息。服务器提供的默认配置是log.message.format.version

13.message.timestamp.difference.max.ms
broker接收消息时的时间戳与消息中指定的时间戳之间允许的最大差异,默认9223372036854775807。如果message.timestamp.type=CreateTime,那么如果时间戳的差异超过此阈值,则消息将被拒绝。如果message.timestamp.type=LogAppendTime,则忽略此配置。服务器提供的默认配置是log.message.timestamp.difference.max.ms

14.message.timestamp.type
定义消息中的时间戳是消息创建时间还是日志追加时间,默认是CreateTime。可选值是“CreateTime”或“LogAppendTime”。服务器提供的默认配置是log.message.timestamp.type

15.min.cleanable.dirty.ratio
此配置控制日志压缩器尝试清理日志的频率(假设启用了日志压缩)。默认情况下,我们将避免清理压缩超过50%的日志,这个比率限制了重复日志所浪费的最大空间(最多50%的日志是重复的)。较高的比率意味着更少、更有效的清理,但也意味着日志中浪费的空间更多。如果还指定了max.compaction.lag.ms或min.compaction.lag.ms配置,那么日志压缩程序将认为日志符合压缩条件:

    1)、脏比率阈值已经满足,并且日志至少在min.compaction.lag.ms期间拥有脏(未压缩)记录;

    2)、如果日志最多在max.compaction.lag.ms期间拥有脏(未压缩)记录。

服务器提供的默认配置是log.cleaner.min.cleanable.ratio

16.min.compaction.lag.ms
消息在日志中保持未压缩状态的最小时间,默认值为0。仅适用于正在压缩的日志。服务器提供的默认配置是log.cleaner.min.compaction.lag.ms

17.min.insync.replicas
当生产者将acks设置为“all”(或“-1”)时,此配置指定必须确认写入操作的最小副本数量,以便认为写入操作成功。如果不能满足这个最小值,那么生成器将抛出一个异常(NotEnoughReplicas或NotEnoughReplicasAfterAppend),默认值为1。当一起使用时,min.insync.replicas和acks允许强制执行更大的持久性保证。典型的场景是创建复制因子为3的主题,设置min.insync.replicas为2,并且设置acks为“all”,这将确保在大多数副本没有收到写操作时,生成程序会引发异常。服务器提供的默认配置是min.insync.replicas

18.preallocate
如果在创建新的日志段时应该在磁盘上预先分配文件,则设置为true,默认为false。服务器提供的默认配置是log.preallocate

19.retention.bytes
如果使用“delete”保留策略,在我们丢弃旧的日志段以释放空间之前,这个配置控制一个分区(由日志段组成)可以增长到的最大大小。默认情况下没有大小限制,只有时间限制,默认值为-1。由于这个限制是在分区级别强制执行的,所以用它乘以分区数就可以计算以字节为单位的主题保留量。服务器提供的默认配置是log.retention.bytes

20.retention.ms
如果使用“delete”保留策略,在丢弃旧日志段以释放空间之前,此配置控制保留日志的最大时间,默认为604800000毫秒,即7天。这表示关于用户必须多长时间读取数据的SLA。如果设置为-1,则不应用时间限制。服务器提供的默认配置是log.retention.ms

21.segment.bytes
此配置控制日志的段文件大小,默认1073741824bytes,即1G。保留和清理总是一次对一个文件进行,因此更大的段大小意味着更少的文件,但对保留的粒度控制更少。服务器提供的默认配置是log.segment.bytes

22.segment.index.bytes
此配置控制将偏移量映射到文件位置的索引的大小,默认10485760bytes,即10M。我们预先分配这个索引文件,只有在日志滚动之后才收缩它。通常不需要更改此设置。服务器提供的默认配置是log.index.size.max.bytes

23.segment.jitter.ms
从预定分段滚动时间中减去的最大随机时基误差,以避免成群的分段滚动,默认为0。服务器提供的默认配置是log.roll.jitter.ms

24.segment.ms
这个配置控制了Kafka强制日志滚动的时间,即使段文件没有满,以确保保留可以删除或压缩旧数据,默认604800000毫秒,即7天。服务器提供的默认配置是log.roll.ms

25.unclean.leader.election.enable
指示是否将不位于ISR集中的副本作为leader最后选择,即使这样做可能导致数据丢失。默认值为false。服务器提供的默认配置是unclean.leader.election.enable

26.message.downconversion.enable
此配置控制是否启用消息格式的向下转换以满足消费请求,默认为true。当设置为false时,broker将不会为希望使用旧消息格式的用户执行向下转换。broker将会以UNSUPPORTED_VERSION错误响应来自这样旧的客户端的消费请求。此配置不适用将可能需要的任何消息格式向下转换复制到followers。服务器提供的默认配置是log.message.downconversion.enable

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐