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) 编辑 收藏 举报