kafka高效读写数据
一、分布式集群
Kafka本身是分布式集群;同时采用分区技术,并发度高。
zookeeper在kafka中的作用:kafka集群中有一个broker会被选举成controller,负责管理集群broker的上下线,所有的topic分区副本分配和leader选举等工作。controller的管理工作都依赖于zk。
二、顺序写磁盘
Kafka的producer生产数据,要写入到log文件中,写的过程是一直追加到文件末端,为顺序写。官网有数据表明,同样的磁盘,顺序写能到600M/s,而随机写只有100K/s。这与磁盘的机械机构有关,顺序写之所以快,是因为其省去了大量磁头寻址的时间。
三、零复制技术
kafka零复制技术示意图:
java复制技术示意图:
(仅仅复制文件,没有对于文件的应用,效率很低。
文件要经过操作系统层(OS层)Buffer缓存传给java应用层输入流,输入流再将数据写到输出流,输出流将数据写到OS层缓存,缓存在将数据写到新的文件。。。)
因为java复制技术在拷贝文件时效率较低,所以对上图做出优化,如下图所示:
(应用层通知操作系统层:仅仅是复制文件,所以操作系统层就不会将数据传给应用层,直接在操作系统层复制文件即可。)








