版权声明:本套技术专栏是做者(秦凯新)平时工做的总结和升华,经过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。版权声明:禁止转载,欢迎学习。QQ邮箱地址:1120746959@qq.com,若有任何问题,可随时联系。算法
kafka日志不是松散的结构化请求日志,错误日志或其余日志。数据库
相似于关系型数据库中的记录,只能按照时间顺序在日志尾部追加写入日志,存储的不多是原生消息,而是消息集合或者消息batch(10版V2)。学习
每一条日志都会被分配一个惟一的且顺序增长的记录号,做为定位该消息的位移标识。spa
kafka的日志设计都是以分区为单位进行的。设计
对于每个分区日志都会进一步细分为日志段(log segment file)以及日志段索引文件。每一个目录下面有三个日志文件,xxx.log是消息集文件, xxx.index 偏移量索引文件 ,xxx.timeindex 时间戳索引文件:3d
00000000000000000000.index 00000000000000000000.log 00000000000000000000.timeindex
复制代码
kafka日志是按照topic来组织的,每一个topic能够分红多个的partition。名字为topic-分区号,即:page_visits-0。好比:有5个partition的名为page_visits的topic的目录结构为:日志
kafka topic 对应的 partition是分段的,每一个段叫LogSegment,包括了一个数据文件和一个索引文件,下图是某个partition目录下的文件: code
注意第二条消息368769.log表示该日志段的第一条消息位移是368769,同时也说明上一个日志段包含了368768条消息。cdn
日志段文件的大小是有上限的,默认大小是1GB,当日志段文件填满记录后,kafka会建立一组新的日志段文件和索引文件。blog
kafka 分区日志还包含.index和.timeindex。注意这里的.index索引是稀疏索引(Sparse index file),默认是日志写入大小达到4KB时,才会在.index中增长一个索引项。能够经过log.index.interval.bytes来设置这个间隔大小。
索引文件的打开方式:只读模式和读写模式。当前日志段的索引文件能够以读写模式打开,非当前的日志段文件只能以只读方式打开。
索引文件的大小默认值是10MB,能够经过参数log.index.size.max.bytes来设置索引文件的最大文件大小。
索引文件项格式以下所示,要求每个索引项必须占用8个字节,log.index.size.max.bytes且必须是8的整数倍,不然会回退到8的整数倍。
log.retention.bytes 删除前日志文件容许保存的最大值,默认是-1,表示kafka不会对log进行大小方面的限制。
log.retention.hours 日志保存的时间,能够选择 hours,minutes和ms。默认是7天。
针对每一个消息的key进行整合,对于有相同key的的不一样value值,只保留最后一个版本
log.cleanup.policty
日志清理保存的策略只有delete和compact两种,其中delete是默认值,就是日志留存的机制决定的。另一个是compact则解决的是压实问题。从0.10.1.0版本开始,能够同时指定两种策略:log.cleanup.policty =delete,compact 表示能够同时为Topic执行普通的留存策略,也对其执行log comaction策略。
log.cleaner.enable:
表示开启日志清理机制,自0.9开始默认为true。若要使用compact,则必须设置log.cleaner.enable=true
log.cleaner.min.compaction.lag.ms:
默认是0,表示除了当前日志段,全部日志段都是能够清理的。可是假如设置log.cleaner.min.compaction.lag.ms=10min,则下午2点为当前时间,13:50以后的日志段不被清理。
通过一次次清理后,各个segment大小会慢慢变小。为了不日志目录下有过多的小文件,kafka在每第二天志清理后会进行小文件日志合并。kafka会保证合并后的segment大小不超过segmentSize(经过log.segments.bytes设置,默认值是1G),且对应的索引文件占用大小之和不超过maxIndexSize(能够经过broker端参数log.index.interval.bytes设置,默认值为10MB)
愉快的周末即将结束,挣扎完后,依然须要昂首前行,辛苦成文,各自珍惜!谢谢!
版权声明:本套技术专栏是做者(秦凯新)平时工做的总结和升华,经过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。版权声明:禁止转载,欢迎学习。QQ邮箱地址:1120746959@qq.com,若有任何问题,可随时联系。
秦凯新 201811252328