Skip to content

架构

FerrumKV 是一个独立的静态二进制文件。Tokio 运行时同时驱动 RESP2 监听器和内置 Web 控制台,两个前端共享同一个 KvEngine 实例——因此你在控制台中做的任何操作都会立即对已连接的 Redis 客户端可见。

组件概览

外部客户端网络与并发Web 控制台处理流水线存储层AOF 持久化TCP / RESP2HTTPTokio task共享引擎

请求处理流水线

  1. 网络层TcpListener:6380 上接受连接;每个连接被交给一个 Tokio 任务处理。
  2. 处理层 — RESP2 解析器将字节流转换为命令数组,执行器针对 KvEngine 运行命令,编码器序列化响应。
  3. 存储层KvEngine 持有一个 HashMap<Vec<u8>, ValueEntry>,由 Arc<RwLock<…>> 保护。后台清理任务淘汰过期键。
  4. 持久化层 — 启用 AOF 后,每个写命令会被追加(并根据 --appendfsync 策略 fsync)到 ferrum.aof;启动时回放该文件以恢复状态。
  5. 控制台 — 独立的 HTTP 监听器在 :6381 上运行,共享同一引擎,展示键值、实时统计和命令终端。

并发模型

服务器基于 Tokio 构建。RESP 连接和控制台作为协作任务在同一运行时上运行,因此无需跨进程同步状态。存储层由单个 RwLock 保护,在保持代码简洁的同时仍能并发服务多个客户端。