kafka 消息存储分析

      kafka 可以支持海量数据发送,轻轻松松QPS过十万,如果JVM内存存储这一块如果不够优秀,根本无法支持这么庞大的QPS。

     存储架构(这里这是落地数据,并木有涉及到序列化发送数据到broker)

     

RecordAccumulator : 此类充当将记录累积到MemoryRecords
RecordBatch:按TOPIC-PARTITION维度记录要发送的数据
MemoryRecords:需要发送的数据暂存储的地方

 

   通过MemoryRecords属性,我们可以还原存储过程,利用compressor 向 buffer 写入数据完成数据的临时存储。

        存储格式,严格按照kafka 消息模型来存储的(看过kafka V0版本消息模型,是不是很熟悉) 

    tips:这里数据存储,为啥不用Java bean这种方式来实现,而是采用ByteBuffer,用byte[]来存储,主要是因为节约内存,ByteBuffer方式要比Java bean 节约40%的内存

    具体实现过程

 
 
原文地址:https://www.cnblogs.com/huxuhong/p/13821491.html