设为首页 加入收藏

TOP

kafka顺序写实现原理   参考来源:学不死的程序员
2019-02-09 02:33:26 】 浏览:35
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,以及零拷贝避免二次拷贝以及内核态到用户态的切换。但是我不懂顺序写是如何实现

模把皕ookeeper知道follower的事物文件是先申请一块64M的连续磁盘空间,当不足4KB时再申请一块64M的连续磁盘空间,当有新事物来时,只在文件尾部做追加操作,可能达到磁盘顺序写的效果。好像中奖了。。


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Kafka's Metadata In ZooKeep.. 下一篇Error while fetching metadata w..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }