gpt4 book ai didi

apache-kafka - 需要了解kafka broker属性 "log.flush.interval.messages"

转载 作者:行者123 更新时间:2023-12-04 05:19:32 31 4
gpt4 key购买 nike

我想了解log.flush.interval.messages在 kafka 代理中设置。

The number of messages written to a log partition before we force an fsync on the log



这是否意味着当它达到指定的消息数时,它将写入磁盘中的另一个文件?如果是这样:
  • 当消费者想要阅读时,它必须从磁盘获取它
    耗时。这样对吗?
  • 同时

    A message is only exposed to the consumers after it is flushed to Disk from segment file(http://notes.stephenholiday.com/Kafka.pdf)



    那么消费者总是从磁盘读取,因为它不能从段文件中读取?
  • 存储在段文件中和存储在磁盘上有什么区别?
  • 最佳答案

    我要提醒您的第一件事是 that Kafka paper关于所有这些如何工作有点过时了,因为当时 Kafka 没有复制。我建议您在 Replication Section 中阅读(如果尚未阅读)有关此内容的信息Kafka 文档。

    正如论文中提到的,每条到达的消息都被写入一个段文件。但是您必须记住,当您写入文件时,数据不会立即传输到磁盘设备,而是首先缓冲。强制写入发生的方法是调用 fsync 系统调用(参见 man fsync),这就是“log.flush.interval.messages”和“log.flush.interval.ms”发挥作用的地方。通过这些设置,您可以准确地告诉 Kafka 何时执行此刷新(在一定数量的消息或一段时间后)。但请注意,一般情况下,Kafka 建议您不要设置这些并使用复制来实现持久性并允许操作系统的后台刷新功能,因为它更有效(请参阅 Kafka 文档中的 Broker configs)。

    对于您问题的第二部分,正如 Replication Section 中所述在 Kafka 文档中,只有已提交的消息(当该分区的所有同步副本已将其应用到其日志时,该消息被视为“已提交”)才会发送给消费者。这是为了避免消费者可能会在领导者失败时看到可能丢失的消息(因为它还没有同步到磁盘)。

    关于apache-kafka - 需要了解kafka broker属性 "log.flush.interval.messages",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33970374/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com