设为首页 加入收藏

TOP

kafka顺序写实现原理   参考来源:学不死的程序员
2019-01-11 14:30:52 】 浏览:50
Tags:kafka 顺序 实现 原理   参考 来源 程序员
每一个partition目录下的文件被平均切割成大小相等(默认一个文件是500兆,可以手动去设置)的数据文件,
每一个数据文件都被称为一个段(segment file),但每个段消息数量不一定相等,这种特性能够使得老的segment可以被快速清除。
默认保留7天的数据。

每个partition下都会有这些每500兆一个每500兆一个(当然在上面的测试中我们将它设置为了1G一个)的segment段。

另外每个partition只需要支持顺序读写就可以了,partition中的每一个segment端的生命周期是由我们在配置文件中指定的一个参数觉得的。
比如它在默认情况下,每满500兆就会创建新的segment段(segment file),每满7天就会清理之前的数据。
它的一个特点就是支持顺序写。如下图所示:

首先00000000000000000000.log文件是最早产生的文件,该文件达到1G(因为我们在配置文件里面指定的1G大小,默认情况下是500兆)
之后又产生了新的0000000000000672348.log文件,新的数据会往这个新的文件里面写,这个文件达到1G之后,数据就会再往下一个文件里面写,
也就是说它只会往文件的末尾追加数据,这就是顺序写的过程,生产者只会对每一个partition做数据的追加(写)的操作。

转载者的话:之前面试被面道 如何实现顺序写而非随机写。首先顺序写性能是随机写的万倍(300MB/S:30KB/S);性能超过固态硬盘,是kafka高兴能的保证之一 ,其次还有buffer减少IO,以及零拷贝避免二次拷贝以及内核态到用户态的切换。但是我不懂顺序写是如何实现的,之前学习zookeeper知道follower的事物文件是先申请一块64M的连续磁盘空间,当不足4KB时再申请一块64M的连续磁盘空间,当有新事物来时,只在文件尾部做追加操作,可能达到磁盘顺序写的效果。好像中奖了。。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Kafka史上最详细原理总结   .. 下一篇Kafka遇到的坑-- Error while fet..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目