存储与运行架构
InfluxDB 1.x/2.x 与 InfluxDB 3 是两代不同架构。前者围绕 TSM、TSI、WAL 和 Cache 构建;后者使用 Rust、Apache Arrow、DataFusion、Parquet 和对象存储思想重新设计。
InfluxDB 1.x/2.x
| 组件 | 作用 |
|---|---|
| WAL | 保存尚未进入持久 TSM 文件的写入,支持崩溃恢复 |
| Cache | 汇集近期写入并形成 Snapshot |
| TSM | 面向时序块的压缩持久文件 |
| TSI | 磁盘化 Series Index,降低高基数索引的内存依赖 |
| Compaction | 合并文件、处理删除标记并优化读取布局 |
高写入、Compaction 和查询共享磁盘资源。磁盘吞吐不足时可能形成 Cache、WAL、Compaction 积压和查询延迟的连锁反应。
InfluxDB 3
InfluxDB 3 使用列式内存格式与 Parquet 持久化,SQL 和 InfluxQL 由 DataFusion 执行。查询需要合并近期尚未持久化的数据与对象文件中的历史数据,并根据 Catalog 定位分区和 Schema。
Core、Enterprise、Clustered/Cloud 的具体组件部署和持久化能力不同,不能把 Clustered 架构图直接当成单机 Core 的进程拓扑。
两代架构对照
| 维度 | 1.x/2.x | 3.x |
|---|---|---|
| 持久格式 | TSM | Parquet 为核心 |
| 索引关注 | Series Cardinality、TSI | 列式 Schema、分区、缓存与对象文件 |
| 查询引擎 | InfluxQL / Flux 体系 | DataFusion SQL / InfluxQL |
| 扩展方式 | OSS 单机与旧企业集群 | Core、Enterprise、Cloud 分层 |
| 迁移 | 旧文件不能简单原地变成新存储 | 通常通过 API、导出导入或迁移工具重写数据 |