news 2026/3/31 5:40:06

理解 Aerospike 的 Flexible Storage三种存储引擎怎么玩

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
理解 Aerospike 的 Flexible Storage三种存储引擎怎么玩

1. 存储介质:先把“砖头”讲清楚

Aerospike 支持的存储介质主要有三类:

  • DRAM(内存)

    • 读写延迟最低,成本也最高
  • NVMe Flash / SSD

    • 非易失性存储,延迟一般在几十到几百微秒
    • 容量大、价格相对便宜,是 HMA / All Flash 的主角
  • Intel Optane™ Persistent Memory(PMem)

    • 介于内存和存储之间的持久化介质
    • 延迟比 SSD 低,比 DRAM 高
    • 适合用来存放索引

需要注意一个小细节:

  • Enterprise Edition(EE)中的 “memory” 指 shared memory

    • 节点进程重启后仍然可以保留数据(持久)
  • Community Edition(CE)中的 “memory” 指进程内存

    • 进程退出就没了(易失)

这对你选择“要不要纯内存模式并做磁盘备份”会有影响。

2. 三种 Flexible Storage 模式概览

Aerospike 的存储配置可以理解为三种“引擎模式”:

  1. In-Memory:索引和数据都在 DRAM
  2. Hybrid Memory Architecture(HMA):索引在 DRAM,数据在 SSD
  3. All Flash:索引和数据都在 Flash(SSD/ NVMe)

这三种模式都基于同样的逻辑结构:

  • Primary Index里保存 digest & tree info、record metadata、storage pointer
  • Bin 区域存放真正的字段值
  • Write Queue、Expiry、Defrag这些后台机制负责持久化、过期和碎片整理

下面分别拆开讲。

3. In-Memory:极致延迟的“全内存模式”

In-Memory 模式下:

  • Primary Index 在 DRAM
  • Record 数据也在 DRAM
  • 可选:通过 write queue 把数据备份到磁盘或 SSD(用于容灾或快速恢复)

特点:

  • 读写延迟可以做到sub-millisecond(亚毫秒级)

  • 访问路径最短:操作几乎全部打在内存上

  • 适合:

    • 高频读写、强实时的热点数据
    • 对延迟极端敏感的业务(实时竞价、风控、部分交易场景)

代价也比较明显:

  • 完全内存承载,成本最高
  • 容量上限直接受限于 DRAM 规模

在 CE 中,如果没做磁盘备份,节点停机后内存数据就没了;
在 EE 中,即便用 shared memory,可以保留数据,但重启仍然要考虑恢复时的一致性与复制

4. HMA:默认、也是最常用的“索引内存 + 数据 SSD”

Hybrid Memory Architecture是 Aerospike 的默认模式,也是大多数场景首选。

  • Primary Index 在 DRAM

    • 所以定位一条记录只需要一次内存访问
  • Record 数据在 SSD / NVMe 上

    • 真正的值读取通过 SSD 完成

读写路径大致是:

  1. 写入:

    • 请求到达后在 DRAM 中更新索引、metadata 等
    • Bin 数据写入 write queue,再顺序刷到 SSD
    • 背后有 defrag 负责维护空间利用率
  2. 读取:

    • 先在 DRAM 中通过索引找到 storage pointer
    • 根据 pointer 定位到 SSD 上的数据块并读取

优点非常突出:

  • 仍然可以做到sub-millisecond 的读写延迟(得益于 DRAM 索引 + 顺序写 SSD)
  • 与纯内存相比,服务器的内存占用可以降低 5-10 倍
  • 大部分容量由 SSD 提供,成本可控且扩容方便

适用场景:

  • 绝大多数在线业务:用户画像、推荐特征、广告投放、订单状态等
  • 需要高读写性能,但数据量已经远超可用内存容量

5. All Flash:索引也上 SSD 的“极致省内存模式”

All Flash 模式下:

  • Primary Index + Record 数据都在 Flash(SSD / NVMe)
  • DRAM 主要用于缓存和运行开销,而不再存储完整索引

要点:

  • 延迟目标是sub 5-millisecond 级别(亚 5 毫秒)
  • 相比 HMA,DRAM 使用进一步降低
  • 非常适合大量小对象的场景
  • 总体服务器占用(尤其是内存)和 HMA 类似,甚至更低

这里有两个官方限制需要记一下:

  1. Index on Flash 必须搭配 “data on SSD”

    • 也就是 All Flash 模式必须让数据也在 Flash 上
  2. Index in PMem 不应该和 “data in memory” 组合

    • 官方不建议“索引在 PMem、数据在 DRAM”的组合

适用场景:

  • 数据量巨大,内存价格占主要成本
  • 对延迟要求没有 HMA 那么苛刻,但仍需要毫秒级
  • 预算敏感,又希望尽量减少服务器数量

6. Namespace 级别的精细化存储策略

Aerospike 的一个非常实用的设计是:每个 namespace 可以配置不同的存储模式。

例如:

  • ns_hot

    • 用户 Session、实时推荐特征
    • 配置为In-MemoryHMA(DRAM + SSD)
  • ns_cold

    • 历史行为日志、长尾账户信息
    • 配置为HMA 或 All Flash

这样你就可以在同一个集群里:

  • 一部分数据“跑极致性能”
  • 另一部分数据“跑性价比”

另外几个和容量相关的重要点:

  • 每个 namespace 有固定存储量(按配置)
  • 集群里每个节点承担大致相同的数据份额
  • 存储空间按 replication factor(复制因子)自动分摊
  • Aerospike 自动做reshard + replicate保证所谓的k-safety(失去 k 个节点仍不丢数据)

7. 数据布局与写入模型:连续存放 + copy-on-write

在底层实现上,Aerospike 的记录有几个特性:

  • Record 数据是连续存放的(便于顺序读写与 defrag)

  • 单条记录最大尺寸支持8 MiB

  • 新版本写入采用copy-on-write

    • 每次更新都会写入一份新的版本
    • 旧版本在 defrag 或过期后被回收

配合 copy-on-write,Defragmenter(碎片整理器)会:

  • 统计每个 block 中的“活跃记录数”
  • 当一个 block 的利用率低于阈值时,把里面剩下的记录搬到其他 block
  • 回收整个 block 作为新的可写空间

这保证:

  • SSD 上长期运行不会因为碎片严重导致性能雪崩
  • 写放大被控制在可接受范围内

8. 可用性与可靠性:随机分布 + 多副本

在可靠性上,Aerospike 通过以下策略保证数据安全:

  1. 多副本存储(replication factor)

    • 每条记录有多个副本,分布在不同节点
    • 节点挂掉时,其他节点会接管服务并触发数据重建
  2. 自动 reshard & replicate

    • 当节点新增、下线或故障时,集群会自动重新分片和复制
    • 保证配置的 k-safety(“最多丢 k 个节点仍不丢数据”)始终满足
  3. 随机数据分布,降低不可用比例

    • 通过随机/哈希分布,把数据均匀地铺在所有节点
    • 即使多个节点同时损失,不可用的数据比例也会显著小于“丢失节点数 / 总节点数”

官方给过一个直观例子:

在一个 10 节点集群上,replication factor = 2,
如果有 2 个节点同时挂掉,在触发重新复制之前,不可用的数据大约只有 2% 左右(约 1/50)。

这就是“随机分布 + 多副本”的效果:
即便发生低概率事故,业务受到的影响仍然可控。

9. 实战建议:如何选择合适的存储模式?

最后给几个实践中的选型建议,方便你在写博客时顺带总结:

  1. 如果你极度在乎延迟,并且数据量可控

    • 优先考虑:In-Memory + 磁盘备份
    • 典型场景:实时竞价、风控决策、核心撮合状态
  2. 如果你想“性能 + 成本”相对平衡(大多数情况)

    • 使用默认的HMA(索引内存 + 数据 SSD)
    • 多数在线业务都可以在这个模式下跑得很舒服
  3. 如果数据量巨大、预算敏感,但还能接受 1~5ms 级延迟

    • 选择All Flash模式
    • 把内存主要用于缓存和索引元数据,尽量把成本压到 SSD 上
  4. 混合策略:按 namespace 细分

    • 热数据 namespace:HMA / In-Memory
    • 冷数据 namespace:HMA / All Flash
    • 一套集群,分区承载不同价格带的数据

10. 小结

Aerospike 的 Flexible Storage 本质上是在回答一个问题:

如何在性能、容量、成本之间找到最适合业务的平衡点?

它给出的答案是:

  • 把索引和数据拆开,允许它们落在不同介质
  • 支持In-Memory / HMA / All Flash三种模式
  • namespace 为单位做精细化存储策略
  • 配合 copy-on-write + defrag + 多副本 + 自动 reshard,在极高性能下保证可靠性

有了这套能力,你在做容量规划和架构设计时,就不再是“要么全内存、要么上个慢盘”的二选一,而可以真正做到按场景选介质,按冷热分层存储

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 18:02:00

DNA和蛋白质序列分析

DNA和蛋白质序列分析DNA和蛋白质序列分析是生物学研究中关键的技术手段,涉及通过测序、比对和解析基因组DNA以及由基因编码的蛋白质序列,进而揭示生命体的遗传信息及其生物学功能。DNA序列分析主要用于解读基因组中携带的遗传信息,包括基因突…

作者头像 李华
网站建设 2026/3/26 8:35:35

终极指南:3步彻底卸载Windows 10 OneDrive的完整方案

终极指南:3步彻底卸载Windows 10 OneDrive的完整方案 【免费下载链接】OneDrive-Uninstaller Batch script to completely uninstall OneDrive in Windows 10 项目地址: https://gitcode.com/gh_mirrors/one/OneDrive-Uninstaller 你是否曾经遇到过这样的困扰…

作者头像 李华
网站建设 2026/3/28 9:06:36

强力解锁:Zephyr RTOS如何用I2S DMA技术终结音频卡顿

强力解锁:Zephyr RTOS如何用I2S DMA技术终结音频卡顿 【免费下载链接】zephyr Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. 项目地址: https://gitcode…

作者头像 李华
网站建设 2026/3/27 15:24:57

Nuklear即时模式GUI:颠覆传统的轻量级界面开发革命

Nuklear即时模式GUI:颠覆传统的轻量级界面开发革命 【免费下载链接】Nuklear A single-header ANSI C immediate mode cross-platform GUI library 项目地址: https://gitcode.com/gh_mirrors/nuk/Nuklear 还在为复杂的GUI框架而烦恼吗?想要一个既…

作者头像 李华