Lavik 0.2.0
以性能为重点的版本:更精简的字符串与集合路径、队列化 I/O 提交、复制和恢复修复,以及可选数据记录 CRC。总结 0.1.0 以来的 47 次提交。
版本概览
发布于 2026 年 10 月 21 日。v0.2.0 对应提交 2908f86f2770e9c6e8acc6585b3bedb4b44d1cd5。本文按应用与运维影响归纳 v0.1.0 之后的 47 次提交。Lavik 继续采用 Apache 2.0 许可证,为 Linux x86-64 与 ARM64 提供 Minimal 和 Standard 发布包。
减少数据路径中的复制与分配
大字符串接收、暂存、分段与读取路径减少中间复制。分组 List 更新限制头部插入碎片与 String 目录重建开销。Hash、Set 点读取避免完整解码紧凑对象,紧凑写入直接拼接受影响部分。Sorted Set 更新复用邻页和稠密页容量,以更少的逐成员分配编辑编码页;集合响应使用自有字节块打包并批量输出。
队列化存储操作与内存释放
io_uring 与 SPDK 路径采用队列化提交;分组读取按物理 owner 并行,事务清理与写入解耦,并批量提交刷新。String 与 Stream 准备过程释放 worker store 状态;分配器默认立即在线执行 mimalloc purging。这些改动针对运行开销,具体性能结果仍须结合各自工作负载与配置。
复制、管理与 Stream 修复
复制 V2 编码支持更大的参数数量,并在内存压力下保留已接纳的写入。Admin 已接受的变更结果得到保留;Stream 范围读取在固定位置前刷新地址。托管 FLUSH 恢复、原生交接可读性、租约策略代理处理与并发诊断也获得修复或更强的回归覆盖。
数据记录 CRC 改为按需启用
新数据记录及值/键 extent 默认不生成 CRC。启动时可通过 --record-crc 或 record-crc yes 启用;--no-record-crc 或 record-crc no 在下一次启动选择禁用策略。每个对象持久化自身策略,读取仍校验已有 CRC,包括旧记录。设备标签、块头、元数据、检查点、函数目录与复制帧保留完整性检查。早于 no-CRC 标志的读取程序无法消费这类对象;升级前安排备份与恢复演练,不应假定支持原地降级。
新发布的基准测试
10 月 21 日报告覆盖 2 vCPU 与 16 vCPU 的 Redis/Valkey 对比、十亿键 SSD 对比及 Aerospike YCSB。16 vCPU、1,000 万键 SPDK 负载中,Lavik 在 1,280 连接下达到 1,156,956 GET QPS 与 945,384 SET QPS;独立十亿键测试达到 1,129,597 GET QPS 与 910,356 SET QPS。各实验负载、客户端数量、主机和持久化条件不同,基准页提供配对延迟与完整方法。
安装与评估 0.2.0
下载与你的架构匹配、带校验和的 0.2.0 发布压缩包。Standard 包含 DPDK/SPDK,Minimal 使用内核 TCP/io_uring。两者均要求启用 io_uring 的 Linux 6.1+ 与兼容 Ubuntu 24.04 的 glibc。包内包含 lavik、lavik-meta、lavik-ctl、Lavik Admin 及其 Node.js 运行时;版本选择器保留 0.1.0 和 Beta 文档。