Kafka高吞吐低延迟原理
Kafka基于磁盘做的数据存储,如何实现高性能、高吞吐、低延时? Reference: http://searene.me/2017/07/09/Why-is-Kafka-so-fast/ and https://queue.acm.org/detail.cfm?id=1563874 . 顺序读写 Kafka将消息记录持久化到本地磁盘中,实际上不管是内存还是磁盘,快或慢关键在于寻址的方式,磁盘分为顺序读写与随机读写,内存也一样分为顺序读写与随机读写。基于磁盘的随机读写确实很慢,但磁盘的顺序读写性能却很高。 Kafka使用磁盘顺序读写来提升性能,Kafka的message是不断追加到本地磁盘文件末尾的,而不是随机的写入,这使得Kafka写入吞吐量得到了显著提升 。每一个Partition其实都是一个文件 ,收到消息后Kafka会把数据插入到文件末尾。 这种方法不能删除数据 ,所以Kafka是不会删除数据的,它会把所有的数据都保留下来,每个消费者(Consumer)对每个Topic都有一个offset用来表示 读取到了第几条数据 。 两个消费者,Consumer1有两个offset分别对应Partition0、Partition1(假设每一个Topic一个Partition);Consumer2有一个offset对应Partition2