十九、kafka中segment文件段
在kafka当中,生产者生产数据,是将数据保存到分区里面的segment文件段当中,但是segment文件段是逻辑存在的。
每个segment文件段包含两部分:一个是.log文件;一个是.index文件。
.log文件:里面保存是生产者生产的数据。
.index文件:里面保存的是.log文件当中数据的索引:稀疏索引
二十、kafka查找数据
kafka查找数据采用的是折半查找(二分查找)。
二十一、segment文件段的命名
第一个segment文件段: -rw-r--r-- 1 root root 10485760 Apr 23 09:41 00000000000000000000.index -rw-r--r-- 1 root root 42356 Apr 22 16:33 00000000000000000000.log 第二个segment文件段: -rw-r--r-- 1 root root 10485760 Apr 23 09:41 00000000000000000617.index -rw-r--r-- 1 root root 100 Apr 23 09:42 00000000000000000617.log 第三个segment文件段: -rw-r--r-- 1 root root 10485760 Apr 23 09:41 00000000000000007617.index -rw-r--r-- 1 root root 100 Apr 23 09:42 00000000000000007617.log
每个segment文件段默认大小是1G,如果超过1G就会分裂出来第二个segment文件段,以此类推。
第一个segment文件段默认命名是20位0,当分裂以后,就是用当前segment文件段当中.log文件当中第一条数据的偏移量命名。
命名规则:以当前segment文件段当中.log文件当中第一条数据的偏移量命名。
二十二、kafka当中数据的默认保存时长
kafka当中数据的默认保存时长是168个小时=7天。
二十三、ack机制
在kafka当中,生产者生产数据到broker,需要有一个确认机制,这个机制就是ack机制:ack机制一共分为三种:
0:生产者生产数据,不管leader是否保存成功,follower是否同步成功,继续发送下一批数据。
1:生产者生产数据,只要leader保存成功,不管follower是否同步成功,继续发送下一批数据。
-1(all):生产者生产数据,既要保证leader保存成功,也要保证follower同步成功,再发送下一批数据。
二十四、kafka高性能的原因
1、顺序读写磁盘
2、采用pageCache页缓存技术