Kafka是高吞吐低延迟的高并发、高性能的消息中间件,在大数据领域有极为广泛的运用。配置良好的Kafka集群甚至可以做到每秒几十万、上百万的超高并发写入。
在读和写的过程中主要用到三个技术:
1.页缓存技术
linux操作系统本身有一层缓存,叫做 Page Cache,是在内存里的缓存,我们也可以称之为 OS Cache,意思就是操作系统自己管理的缓存。
Kafka在写入磁盘文件的时候,可以直接写入这个 OS Cache 里,也就是仅仅写入内存中,接下来由操作系统自己决定什么时候把 OS Cache 里的数据真的刷入磁盘文件中。写入内存相对于直接写入磁盘效率大大提高。
2.磁盘的顺序写
kafka写数据的时候,他是以磁盘顺序写的方式来写的。也就是说,仅仅将数据追加到文件的末尾,不是在文件的随机位置来修改数据。
这种磁盘顺序写的性能基本上可以跟写内存的性能本身也是差不多的。
基于上面两点,Kafka 就实现了写入数据的超高性能。
3.零拷贝技术
这个技术主要是应用在数据的读的时候。如果kafka的数据在内存中,是用不到这种技术的,在读数据的时候直接从内存中拿就可以了。
如果数据在磁盘中,就需要先拿到内存中,再到kafka的消费者中。使用这种技术就直接在内存中,把数据的文件符拷贝到sorket中,直接给消费者就可以了。
这样就实现了Kafka读数据的高性能。