avatar

目录
kafka高效读写数据

kafka高效读写数据

一、分布式集群

Kafka本身是分布式集群;同时采用分区技术,并发度高。

zookeeper在kafka中的作用:kafka集群中有一个broker会被选举成controller,负责管理集群broker的上下线,所有的topic分区副本分配和leader选举等工作。controller的管理工作都依赖于zk。

二、顺序写磁盘

Kafka的producer生产数据,要写入到log文件中,写的过程是一直追加到文件末端,为顺序写。官网有数据表明,同样的磁盘,顺序写能到600M/s,而随机写只有100K/s。这与磁盘的机械机构有关,顺序写之所以快,是因为其省去了大量磁头寻址的时间。

三、零复制技术

kafka零复制技术示意图:

kafka零拷贝技术

java复制技术示意图:

(仅仅复制文件,没有对于文件的应用,效率很低。

文件要经过操作系统层(OS层)Buffer缓存传给java应用层输入流,输入流再将数据写到输出流,输出流将数据写到OS层缓存,缓存在将数据写到新的文件。。。)

java拷贝技术原理图解

因为java复制技术在拷贝文件时效率较低,所以对上图做出优化,如下图所示:

(应用层通知操作系统层:仅仅是复制文件,所以操作系统层就不会将数据传给应用层,直接在操作系统层复制文件即可。)

零拷贝技术图解

文章作者: Yang4
文章链接: https://masteryang4.github.io/2020/04/27/kafka%E9%AB%98%E6%95%88%E8%AF%BB%E5%86%99%E6%95%B0%E6%8D%AE/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MasterYangBlog
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论