码迷,mamicode.com
首页 > 其他好文 > 详细

Kafka(四)Kafka日志管理

时间:2018-07-15 21:19:59      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:创建   soft   区分   RoCE   文件名   生产   cto   同步数据   style   

kafka消息是通过主题来进行组织和区分的,每个主题有分为零个或多个分区,分区数量可以在创建时指定也可以后期修改,不过修改只能增加不能删除,每个分区又有一个或多个副本,副本中会有一个副本被选做Leader副本,该副本对外提供读写操作,其他副本则是Follower。生产者发送消息到Leader副本的代理节点上,Follower副本从Leader同步数据。


分区的每个副本对应到一个Log对象,每个Log有划分为多个LogSegment,每个LogSegment包括一个日志文件和两个索引文件,其中两个索引文件分别是偏移量索引文件和时间戳索引文件。Log和LogSegment是逻辑概念,日志文件和索引文件才是物理存储对象,下图为主题BBB三个分区的日志文件目录,每个分区对应一个目录。

技术分享图片

下图为BBB主题0分区的日志文件(.log)和偏移量文件(.index)以及时间戳文件(.timeindex)。日志文件默认单个日志文件大小为1GB,可以通过修改配置文件来指定大小。Kafka提供日志切割机制,要么达到日志文件大小,如果没有达到大小阈值,但是达到了log.roll.ms或者log.roll.hours设置的值也会进行切割创建新的日志文件。

技术分享图片

数据文件名称是一堆0,其实这就是数据文件的命名规则,它是由第一条消息的偏移量值然后左补0构成20位长度来形成的。

Kafka会把每个日志段的基准偏移量保存到ConcurrentSkipListMap集合中,通过二分法可以快速定位到消息所在的数据文件和索引文件,然后在索引文件中通过二分法,查找最小值等于指定偏移量的最大偏移量,最后从查找的最大偏移量出开始扫描数据文件,直到查询到偏移量与指定偏移量相等的消息。


日志目录中的锁文件

技术分享图片

同一时刻只能由一个日志管理器实例或者线程来获取该锁文件,该文件只有在Kafka正常关闭后才会被删除,通过该文件可以判断Kafka上次是否正常关闭。


Kafka(四)Kafka日志管理

标签:创建   soft   区分   RoCE   文件名   生产   cto   同步数据   style   

原文地址:http://blog.51cto.com/littledevil/2143366

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!