FlowDB 是一款基于 Rust 构建的高性能嵌入式时序存储引擎,采用定制化 LSM-Tree 架构,专为时序数据和日志类负载深度优化。
- 无锁序列号分配:基于
AtomicU64+ Relaxed Ordering 的批量序列号分配,零竞争写入 - 锁外 WAL 预编码:WAL 缓冲区在获取写锁前完成全部编码,临界区仅负责追加和插入,极大缩短锁持有时间
- 双态 MemTable 设计:活跃状态使用
Vec + HashMap(追加写入 O(1),缓存友好),冻结时才转换为BTreeMap,将排序开销延迟到刷盘阶段批量处理 - 零拷贝写入路径:
write_batch_owned利用 Rust 所有权语义,直接 move 数据,无需 clone - 配合 TTL 机制(微秒精度),特别适合时序数据按时间窗口批量过期的场景
- RocksDB 风格惰性迭代器:
ScanIterator不物化完整结果集,支持FusedIterator,内存占用恒定 - HTTP API 支持 JSON 和 Binary 两种写入格式
- UDP 二进制协议适合高频小包写入场景(IoT、监控指标)
- 内置 Prometheus 格式指标输出(
/metrics),p50/p90/p99 延迟直方图
对比 RocksDB 基准测试:顺序写入 5.7M ops/s(1.92x)、并发写入 6.7M ops/s(1.63x)
| 模式 | 说明 |
|---|---|
| 嵌入式库 | 作为 Rust crate 直接集成,零运维开销 |
| 独立服务 | HTTP + UDP 双协议写入,内嵌 Web 管理面板 |
Ext Link: https://github.com/restsend/flowdb
1
共 0 条评论, 1 页
评论区
写评论还没有评论