高效读写数据
1)kafka本身是分布式集群,可以采用集群技术,并行度高
2)读写数据采用稀疏索引,可以快熟定位要消费的数据
3)顺序写磁盘
kafka的producer生产数据,要写入到log文件中,写的过程一直追加到文件的末端,为顺序写,官网有数据表明,同样的磁盘,顺序写能到600M/s,而随机写只有100k/s.这与磁盘的机械结构有关,顺序写之所以块,是因为其能省区了大量磁头寻址的时间
页缓存+零拷贝技术
零拷贝:Kafka的数据加工处理操作由Kafka生产者和Kafka消费者处理。Kafka Broker应用层不关心存储的数据,所以就不用走应用层,传输效率高
PageCache页缓存:Kafka重度依赖底层操作系统提供的PageCache功能,当上层有写操作时,操作系统只是将数据写入PageCache.当操作发生时,从PageCache中查找,如果找不到,再从磁盘中读取。实际上PageCache是京可能多的内存都当作了磁盘缓存来使用
参数 | 描述 |
---|---|
log.flush.interval.messages | 强制页缓存刷写到磁盘的条数,默认是long最大值,9223372036854775807。,一般不建议修改,交给系统自己管理 |
llog.flush.interval.ms | 每隔多久,刷数据到磁盘,默认是null,一般不建议修改,交给系统自己管理 |