性能 · 架构 · 成本
Lavik vs DragonflyDB
十亿键读取,显著降低实测尾延迟。
Lavik 与 DragonflyDB SSD 分层对比:十亿键 GET/SET 基准、p99 延迟、节点成本模型及版本相关的数据结构支持。
Lavik 项目团队 · 资料核对: 2026-10-13 · Dragonfly 1.40.2 · Tiered Storage
2026 年 9 月 18 日 · beta.1
让真实测量说明性能
1B 键 × 1 KiB 值;AMD EPYC 9V74,约 126 GiB RAM,六块 NVMe,16 个逻辑 CPU 亲和性,pipeline=1。每点测量一次,窗口 60 秒。对照数据来自相同主机较早的扫描;beta.1 SPDK 点为新测。每种操作分别选择各系统最高 QPS 点,连接数可能不同。 方法与完整报告 ↗
| 操作 | 系统 | QPS | p99 (ms) | p99.9 (ms) | 连接数 |
|---|---|---|---|---|---|
| GET | Lavik 0.1.0-beta.1 SPDK | 952,560 | 3.599 | 5.535 | 640 |
| GET | Dragonfly 1.40.2 · Tiered Storage | 466,039 | 38.911 | 100.863 | 1280 |
| SET | Lavik 0.1.0-beta.1 SPDK | 764,939 | 10.879 | 16.639 | 1280 |
| SET | Dragonfly 1.40.2 · Tiered Storage | 539,616 | 14.591 | 32.127 | 640 |
读懂这个结果
十亿键测试中,Dragonfly 配置 96 GiB maxmemory,使用六块 NVMe 上的 RAID0/XFS 文件;Lavik SPDK 直接访问相同设备。Dragonfly 进行 180 秒 GET 预热。这是不同存储配置的整体比较,并非对单一架构特征的隔离实验。请连同连接数和 p99 比较完整测量点。
这是 Lavik 项目发布的基准,尚非第三方复测。单机短窗口结果不能证明相同崩溃持久性、长期稳定状态、集群容量或应用 SLA。使用下方成本模型前,请对照你的负载、数据分布与延迟预算。
查看完整连接数与线程扫描
| 系统 | 操作 | 线程* | 连接 | QPS | p99 (ms) |
|---|---|---|---|---|---|
| Lavik | GET | 16 | 80 | 396,645 | 0.319 |
| Lavik | GET | 16 | 160 | 598,462 | 0.503 |
| Lavik | GET | 16 | 320 | 792,119 | 0.959 |
| Lavik | GET | 16 | 640 | 952,560 | 3.599 |
| Lavik | GET | 16 | 1280 | 903,055 | 9.279 |
| Lavik | GET | 16 | 2560 | 801,680 | 34.815 |
| Lavik | SET | 16 | 80 | 422,450 | 0.711 |
| Lavik | SET | 16 | 160 | 530,672 | 3.759 |
| Lavik | SET | 16 | 320 | 621,373 | 6.111 |
| Lavik | SET | 16 | 640 | 717,578 | 7.839 |
| Lavik | SET | 16 | 1280 | 764,939 | 10.879 |
| Lavik | SET | 16 | 2560 | 727,984 | 18.431 |
| DragonflyDB | GET | 16 | 80 | 165,571 | 4.223 |
| DragonflyDB | GET | 16 | 160 | 376,337 | 3.279 |
| DragonflyDB | GET | 16 | 320 | 366,428 | 9.983 |
| DragonflyDB | GET | 16 | 640 | 415,906 | 21.375 |
| DragonflyDB | GET | 16 | 1280 | 466,039 | 38.911 |
| DragonflyDB | GET | 16 | 2560 | 422,117 | 82.943 |
| DragonflyDB | SET | 16 | 80 | 353,266 | 1.967 |
| DragonflyDB | SET | 16 | 160 | 454,254 | 3.359 |
| DragonflyDB | SET | 16 | 320 | 526,022 | 7.391 |
| DragonflyDB | SET | 16 | 640 | 539,616 | 14.591 |
| DragonflyDB | SET | 16 | 1280 | 524,890 | 27.135 |
| DragonflyDB | SET | 16 | 2560 | 474,635 | 51.455 |
*线程角色不同:Lavik 工作线程、Redis/Valkey I/O 线程、Dragonfly proactor、Garnet 最小线程池线程。 CSV ↗
存储设计如何影响你的应用
两者均可使用 NVMe SSD,差异在于如何服务超出内存的数据。Dragonfly 按内存阈值控制下放与提升;Lavik 通过存储引擎访问持久化值,结合工作线程拥有的索引与异步 NVMe I/O。
Lavik 通过支持 SSD 的存储引擎承载字符串、哈希、列表、集合和有序集合载荷。Dragonfly 的常规分层主要面向字符串;官方文档也介绍了实验性的列表节点和哈希下放。因此,“Dragonfly 的 SSD 只支持字符串”这一概括已过时。所给基准测试的是字符串 GET/SET,而非这些集合路径。
Dragonfly SSD 分层文档 ↗ · Dragonfly GA 公告与实验性集合分层 ↗ · Lavik beta.1 存储与恢复 ↗
熟悉的协议,面向 NVMe SSD 的执行路径
速度来自架构,而不是要求应用换一种协议。
Lavik 是 Apache 2.0 开源的 Redis 兼容键值存储。内存保存键索引,NVMe SSD 承载值数据。线程本地状态、协程与异步 I/O 让工作线程在等待存储时继续处理其他请求;SPDK 提供直接访问 NVMe 的存储路径。九月的 SPDK 测试仍使用内核 TCP,并未使用 DPDK 网络。
存储引擎覆盖字符串、哈希、列表、集合与有序集合载荷;集合可使用分组存储。键索引、路由元数据和缓冲区仍消耗内存。字符串 GET/SET 基准并不证明其他数据结构具有相同 QPS。 beta.1 架构 ↗ · 存储与集合 ↗ · Apache 2.0 ↗
SSD 单价相同,节点数量仍可能不同
假设模型 · 可调整输入
相同数据量与 QPS 目标,需要多少节点?
默认模型假设 1 TiB 值数据、每主节点 1 TiB 可用值容量、100 万 QPS、使用实测吞吐量的 70%、两份完整数据副本,并假设每节点每月 1,000 美元。双方价格均可修改。
| 系统 | 选定实测 QPS / p99 | 主节点 / 总节点 | 月费假设 |
|---|---|---|---|
| Lavik SPDK | 952,560 / 3.599 ms | 2 / 4 | $4,000 |
| DragonflyDB | 466,039 / 38.911 ms | 4 / 8 | $8,000 |
Primaries = max(⌈data / usable capacity⌉, ⌈target QPS / (observed QPS × utilization)⌉)
总节点数 = 主节点数 × 数据副本数,月费 = 总节点数 × 每节点月费。副本不计入额外服务 QPS。假设分片均衡、每节点性能可线性复用、可用容量已扣除空间余量及元数据,并且总内存足以容纳索引与缓冲区;改变每节点数据量可能改变吞吐量。复制开销、故障后余量、网络和备份费用尚未建模。p99 筛选仅选择已测点,不能证明集群或应用 SLA,尤其不能证明 P99.99。
何时选择 Lavik
对于大规模值集合的广泛随机访问,或哈希、列表、集合、有序集合也需要 SSD 容量的场景,可优先评估 Lavik。单机更高的实测吞吐量可能减少所需节点;下方模型明确展示这一推导。
何时保留现有方案
如果工作集主要命中内存,或字符串分层负载已满足延迟预算,Dragonfly 仍值得评估。请按实际数据形态验证当前实验性集合支持,不要把 GET/SET 基准外推为集合性能。
从测试到迁移
常见问题
Lavik 与 Dragonfly 都能用 SSD 存 Redis 数据吗?
可以。Lavik 存储引擎覆盖字符串、哈希、列表、集合和有序集合载荷。Dragonfly 支持字符串分层,并提供有限制的实验性列表与哈希分层。两者仍需内存,元数据和缓冲区并非没有成本。
使用 Lavik 需要改用新协议吗?
不需要。Lavik 接受 Redis/Valkey 兼容命令,默认 RESP2,也可协商 RESP3。请根据 beta.1 的命令参考、客户端兼容性和迁移指南验证具体行为;协议兼容不等于所有命令、模块或故障切换行为完全相同。
如何把单机结果用于成本评估?
先选择匹配实际读写比例与延迟预算的实测点,再同时考虑数据容量和 QPS 所需节点数。把索引内存、复制、容量余量与故障场景纳入真实回放。页面成本模型是明确假设下的规划示例,不是多节点集群实测或云服务报价。
来源与版本
基准绑定上游提交;产品文档按标注日期核对。八月历史构建与九月 beta.1 结果保留各自范围,不跨实验拼接。
APACHE 2.0 · REDIS COMPATIBLE · NVMe SSD