log.flush.interval.ms参数的刷新到磁盘是指把数据写入到日志数据目录(log.dir)吗?

╰✿つ樱 落、 发表于: 2020-01-20   最后更新时间: 2020-01-20 15:33:27   2,466 游览

图中分区日志是指日志数据目录(log.dir)下的分区数据吗?
screenshot

发表于 2020-01-20
¥1.0

是的。
log.flush.interval.ms:topic中的消息在刷新到磁盘之前保存在内存中的最大时间(以毫秒为单位),如果未设置,则使用log.flush.scheduler.interval.ms。
log.flush.scheduler.interval.ms:日志刷新的频率(以毫秒为单位)检查是否有任何日志需要刷新到磁盘。

图中的分区日志和刷盘都是指日志数据目录(log.dir)吗,那设置了log.flush.interval.ms后日志数据里面的东西是通过操作系统刷盘进去然后更改高水印值,这样的话消费者岂不是有很大的延迟?

对,数据落地都是指的log.dir。
如果设置了log.flush.interval.ms就会取代系统的默认flush间隔。

我看文档上log.flush.interval.ms如果没设置的话会用log.flush.scheduler.interval.ms,但log.flush.scheduler.interval.ms是个非常大的值那样怎么进行刷盘。还有一个问题,消费者不应该先去页缓存中里面读取数据吗,按照现在的描述是消费者根据log.dir分区日志中高水印值来获取信息的,难道消费者不需要用页缓存吗?

落磁盘的时候,数据才允许消费者读取,其实数据是在缓存的。
参考:https://www.orchome.com/18

你的答案

查看kafka相关的其他问题或提一个您自己的问题