S3Stream:共享流存储库
S3Stream 是 AutoMQ 中核心的流存储组件,秉承了 AutoMQ 存算分离的理念,将 Apache Kafka 原生的基于 ISR 复制的 Log 存储层卸载至对象存储,并提供 WAL 存储加速能力。 S3Stream 是一个流存储 Library,它并不是一套分布式存储服务,AutoMQ 创新性地在对象存储之上实现了一套核心的流存储 API,包括位点管理、Append、Fetch 和 Trim 数据等,如下代码片段是这套 API 的几个核心接口。流存储的几个核心特征
互联网上所有的数据都是以流式的方式产生的,再以流的方式进行存储和计算,以挖掘实时数据的业务价值,这也意味着流数据对存储至少有以下几个要求:- 低延迟:流式数据最大的价值是数据新鲜度,比如广告推荐相关的业务,对实时性要求非常高,数据最快地被存储和计算,将能最大程度上发挥出数据的价值。
- 高吞吐:所有的数据以流式的方式产生,意味着对流存储有超高的吞吐要求,很多业务至少有 GiB/s 的带宽要求。
- 低成本:海量的流数据意味着存储成本高,再加上很多业务有数据回放,重新计算的诉求,按天存储流数据是业务常态。
S3Stream 架构

- WAL 存储:根据业务的延迟和持久性需求选择不同的存储介质,可以选择块存储、对象存储或文件存储。
- S3 存储:选择云厂商规模最大的对象存储服务提供高吞吐和低成本的数据主存服务。
- 数据缓存:热数据和预读的冷数据都会放一份在缓存中用于加速读取,同时根据消费者专注度机制进行有效地驱逐,提高内存利用效率。