文章预览
01 前言 Kafka 作为流处理平台,在实时流计算和在线业务场景,追尾读追求端到端低延迟。在离线批处理和削峰填谷场景,数据冷读追求高吞吐。两个场景都需要很好的数据缓存设计来支撑,Apache Kafka 的数据存储在本地文件,通过 mmap 将文件映射到内存中访问,天然就可以依托操作系统来完成文件的缓冲持久化、缓存加载和缓存驱逐。 AutoMQ 采用存算分离的架构,将存储分离至对象存储,本地没有数据文件,因此无法像 Apache Kafka 一样直接使用数据文件 mmap 来进行数据缓存。这时候通常缓存对象存储的数据有两种做法: 第一种是将对象存储文件下载到本地文件,然后再通过 mmap 读取本地文件。这种做法在实现上比较简单,但是需要一块额外的磁盘来缓存数据,然后根据缓存所需的大小和速率,还需要购买磁盘空间和 IOPS,该做法不够经济; 第二种是
………………………………