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%的内存

    具体实现过程

 

 

 

 

 

 
 

posted on 2020-10-15 19:31  柠檬糖大人你尽然盗号  阅读(268)  评论(0编辑  收藏  举报

导航