前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kafka-为什么可以高效读写

Kafka-为什么可以高效读写

原创
作者头像
Get
发布2024-03-10 21:26:46
620
发布2024-03-10 21:26:46
代码语言:java
复制
顺序写磁盘
Kafka的producer生产数据,需要写入到log文件中,写的过程是追加到文件末端。
顺序写的方式,官网有数据表明,同样的磁盘,顺序写能够到600M/s,而随机写只有200K/s,这与磁盘的机械结构有关,
顺序写之所以快,是因为其省去了大量磁头寻址的时间。

零复制技术:
NIC:Network Interface Controller网络接口控制器

常规的读取操作:
1、操作系统将数据从磁盘文件中读取到内核空间的页面缓存
2、应用程序将数据从内核空间读入到用户空间缓冲区
3、应用程序将读到的数据写回内核空间并放入到socket缓冲区
4、操作系统将数据从socket缓冲区复制到网卡接口,此时数据通过网络发送给消费者

零拷贝技术:
1、将磁盘文件的数据复制到页面缓存中一次,
2、然后将数据从页面缓存直接发送到网络中(发送给不同的订阅者时,都可以使用同一个页面缓存),从而避免了重复复制的操作。
clipboard.png
clipboard.png
代码语言:java
复制
kafka = 共享空间(mmap) + 零拷贝(sendfile)
clipboard.png
clipboard.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com