进入Kafka的数据,都被作为日志存储到磁盘上了,并能够在磁盘上保留一段时间,最后被清理。其中,每一个分区的日志,还具备有日志轮转功能,这个设计类似于Log4j等日志系统。此外,kafka号称性能极好,它有disk io操作,查询性能居然也很好,它是怎么做到的呢?
想了解大数据的学习路线,想学习大数据知识以及需要免费的学习资料可以加群:784789432.欢迎你的加入。每天下午三点开直播分享基础知识,晚上20:00都会开直播给大家分享大数据项目实战。
- 1、LogManager 设计之类图
- 2、Partition Log的结构
- 3、Partition Log操作
- 4、LogManager
- 5、Log Compaction
- 6、Configuration
1、LogManager设计之类图
在Kafka的代码里,进行日志管理的类是LogManager,它提供了对Log管理方面的操作,其中对Log的基本操作有:
createLog(TopicAndPartition partition) // 为分区创建Log deleteLog(TopicAndPartition partition) // 删除某个分区
从这两个方法可以看出是Kafka对于Log的管理是基于Partition的。
也就是说,在一个Kafka broker内,任何一个partition都会有一个逻辑的Log与之对应。
所以呢,上面类图中的Log类,其实就是Partition Log,在后续内容中,就将其称为Partition Log了。