我对kafka来说是个新手,所以如果这个问题很微不足道,请原谅我。我有一个非常简单的设置,用于定时测试,如下:
机器A->写入主题1(经纪) ->机器B从主题1读取1机器B->写消息只需阅读到主题2(经纪) ->机器A从主题2
读取现在,我在一个无限的循环中发送了大约1400个字节的消息,该消息很快就会填充我的小经纪人的空间。我正在尝试为log.Retention.ms,log.trention.bytes,log.semt.bytes和log.sement.delete.delete.delay.ms设置不同的值。首先,我将所有值设置为最低允许的最小值,但似乎是这种降低的性能,然后将它们设置为经纪人在完全满足之前可能采取的最大值,但是当删除删除时的性能下降。设置这些值以获取绝对最小延迟是否有最佳做法?
感谢您的帮助!
apache kafka使用日志数据结构来管理其消息。日志数据结构基本上是一组有序的细分集,而段是一系列消息。Apache Kafka在细分级别而不是在消息级别提供保留。因此,由于这些违反了保留政策,Kafka一直从头开始删除细分市场。
apache kafka为我们提供以下保留策略 -
- 基于时间的保留
在此策略下,我们配置了一个细分市场(因此)可以使用的最长时间。一旦细分跨越了配置的保留时间,它将根据配置的清理策略标记为删除或压实。细分市场的默认保留时间为7天。
这是您可以在Kafka Broker Properties文件中设置的参数(优先级降低):
以毫秒为单位配置保留时间
log.trention.ms = 1680000
如果未设置log.tention.ms
使用log.retention.minutes = 1680
使用log.terention.minutes未设置
log.retention.hours = 168
- 基于大小的保留
在此策略中,我们为主题分区配置了日志数据结构的最大大小。一旦日志大小达到此大小,它就会从其末端从其末端删除段。该政策不受欢迎,因为这不能为消息到期提供良好的可见性。但是,由于磁盘空间有限,我们需要控制日志的大小。
这是您可以在Kafka Broker属性文件中设置的参数:
配置日志的最大尺寸
log.trention.bytes = 104857600
因此,根据您的用例,您应该配置 log.tention.bytes ,以便您的磁盘不应完整。