当 GPU 算力持续提升,AI 系统的瓶颈正在从单点算子扩展到数据面。推理服务需要跨节点复用 KV Cache;训练流水线需要在异构资源池之间传递中间态;模型文件与 Checkpoint 需要在远端访问与本地缓存间稳定流动。
然而,现有系统多为面向特定场景定制的专用组件,例如面向 KV Cache 的 MooncakeStore。许多 AI 场景仍缺少成熟的 AI-native 组件,算法团队为了快速验证,往往会临时搭建数据搬运模块。随着模型规模与集群弹性一起增长,这种“拼图式”数据面的开销会持续膨胀,逐渐吞噬 CPU、I/O、内存和运维精力,并暴露出 7 个致命的工程痛点:
- 局部场景经验难以迁移: 专用
KV Cache系统将缓存语义和RDMA传输绑定在特定路径上,面对更泛化的数据面场景难以直接平移 - 资源统一管控不够彻底: 框架级
L2与外部L3缓存往往同处单机CPU内存,L2难以进入统一索引和驱逐治理,增加缓存穿越开销 - 本机进程间缺少共享内存快路径: 现有数据通路多按
RDMA/TCP组织,同机Worker的对象交接仍会绕行网络协议栈 - 缺少动态弹性的
AI Infra通信平面: 跨资源池交接需要动态成员和异步交接,固定成员通信模型会放大连接和故障恢复复杂度 - 业务进程与数据面资源治理耦合: 业务进程动态启停时若同时承担容量贡献,会引发数据面的
Rebalance震荡和连接风暴 - 对象生命周期难以统一收口: 缓存、消息和文件各自维护引用和驱逐状态,状态极易散落在业务框架、缓存层和传输层之间
- 可观测性链路割裂: 缓存命中、传输路径、对象物化分散在不同系统,性能问题排查时只能在多套指标中拼凑线索
Fluxon 的设计正是围绕这些问题展开。它将数据面资源、对象生命周期、跨节点传输和业务接入分别抽象,纳入同一套存传一体底座统一治理,让系统资源更多用于模型计算本身,而不是耗散在数据面的拼装与搬运上。基于这套统一的 Rust 存传一体底座,Fluxon 向上提供三大标准化接口,直接面向 AI 系统里的核心瓶颈:
- KV/RPC(统一键值与 RPC):打破数据孤岛,实现推理侧
KV Cache与latent cache的跨节点、跨进程高效复用 - MQ(弹性消息队列):解耦系统依赖,支撑异构资源池之间的弹性消息传输
- FS(兼容
S3的文件、对象与缓存加速系统):统一键值、文件、对象三类缓存能力,并支持 AI 数据与模型文件的远端访问、S3转发和跨集群大规模迁移
- 全链路 Rust: 将连接处理、协议编解码、状态机推进、共享内存管理和观测采集收敛至 Rust 热路径,降低解释执行、跨语言边界和不可控内存复制带来的热路径抖动
- 存传一体: 将存储与传输置于同一套数据面统一优化,优先走跨进程共享内存快路径,缓解对象生命周期与传输链路割裂的问题
- 跨节点高性能传输: 集群内优先使用
RDMA,并支持TCP自动兜底切换,以及通过界面动态启停和切换网卡,以降低固定传输路径带来的可用性风险 - 自动跨节点中继: 支持跨节点、跨子集群的自动
relay/ 中继转发,收敛复杂网络拓扑带来的接入成本 - 全局内存分配与治理: 统一管控全局内存分配、对象生命周期、容量边界和回收策略,避免资源碎片化与失控膨胀
- 统一角色模型:
Master、Owner Client和External Client分层协作,将控制面和数据面组织为可扩展的树状拓扑,并将业务服务进程从数据面资源治理和底层通信链路中解耦,以降低Rebalance震荡和连接风暴 - 统一对象接口: 由系统统一组织多字段对象,平衡接口灵活性、使用简洁性和底层优化空间,缓解对象生命周期状态分散的问题
- 张量原生零拷贝交接路径: 更适合高频张量对象在缓存与传输路径中的复用,减少同机对象交接绕行网络协议栈的开销
- 统一观测: 基于
Prometheus协议和Greptime收敛metric / trace / log,并内置完善的GUI,用于观测集群成员状态、日志信息、关键指标和拓扑结构,从而缓解观测链路割裂的问题 - 三类接口复用:
KV/RPC、MQ和FS共用缓存、传输、租约、容量治理和观测能力,避免为不同场景重复建设多套数据面
面向世界模型推理缓存、状态共享、服务间调用和张量对象复用。在多视角潜在空间预测、状态外推和前缀缓存复用场景下,Fluxon KV/RPC 提供的是更通用的 AI 数据面,而不只是面向单一 KV Cache 的专项能力。
- 本地缓存副本与最终一致性读路径: 优先命中本地快路径,后台异步同步元数据
- 批量回收与热点治理: 通过
batch_delete异步推进失效清理,并结合TinyLFU更高效地复用热点对象 - 同时治理 AI 工作负载中的
L2与L3: 让全局数据对象可索引、可定位、可复用,减少多级缓存重复驻留带来的冗余内存浪费 - KV 与 RPC 协同: 同一套参数组织、缓存和通信底座同时服务状态存储与服务间调用
面向异构训练、数据处理流水线和跨资源池中间态交接。当前端 Producer 和后端 Consumer 被拆到不同机器、不同资源池甚至不同子集群时,Fluxon MQ 负责将消息保活、容量治理和跨集群放置收束到统一消息层。
Lease保活语义: 将消息保活绑定到channel,确保数据在真正消费前具备有限时域的可靠保留语义channel级前缀统计与容量治理: 持续维护消息数量与容量占用边界,便于扩缩和流量治理- 跨集群负载感知放置: 结合消费侧位置做
Payload放置决策,尽量缩短预取链路并稳定吞吐 - 与 KV 协同设计: 消息壳和成员元数据留在控制面,大
Payload留在FluxonKV数据面,避免重复建设第二套大对象传输链路
Fluxon FS 是一款面向 AI 数据与模型文件、兼容 S3 的高性能文件与对象缓存系统,具备读写加速、远端访问、S3 转发、缓存命中及跨集群大规模迁移等功能。面对高分辨率视频、轨迹样本和 Checkpoint 等大文件场景,Fluxon FS 能够将这些复杂的流动与加速需求统一交付给同一套数据面。
- 统一缓存体系: 直接复用
FluxonKV/RPC的缓存与通信能力,将文件拆成KeyValue片段做分片缓存,使一套系统同时兼容键值、文件和对象缓存的读写加速 S3转发访问: 支持面向 AI 数据与模型文件的对象存储访问入口和转发能力- Python 文件语义透明接入: 尽量保持
open() / read() / write()的上层使用方式,同时减少系统调用与跨进程开销 - 小文件 / 大文件读写特化优化: 针对不同文件粒度和读写路径分别进行并发与链路优化,提升带宽利用率与整体吞吐
- 跨集群大规模搬迁: 支持
PB级数据迁移,并将缓存、传输和失败恢复置于统一链路
基准测试主要覆盖 RPC、KV 和 FS 三类数据面;相关脚本和配置主要位于 fluxon_test_stack/。
RPC Benchmark 主要展示不同消息规模和并发条件下的调用延迟与吞吐表现,用于观察服务间调用链路的稳定性和尾延迟表现。
TCP Benchmark 显示,Fluxon 在 Read-affinity 和 Read-Zipf 两类读多负载上的表现明显优于 MooncakeStore 和 Redis;put_only 当前的主要约束仍在 inflight 元数据判重路径,而非 Payload 传输。
测试结果显示,小文件读取和大文件写入性能已显著优于 Alluxio,大文件读取性能基本持平,小文件写入性能仍有进一步优化的空间。
MQ 目前主要展示场景问题和数据面设计,自动化运行入口见 test_runner.py 与 fluxon_test_stack/。
用于 Quick Start(Docker):
- 已安装 Docker
- Quick Start 镜像已经内置 demo 流程所需的中间件
用于生产部署或源码构建:
- 操作系统:仅支持 Linux
- Python:
>= 3.10 - Rust:工具链固定为
1.93.0,见 fluxon_rs/rust-toolchain.toml - 外部中间件:
- 最小服务平面需要
etcd和Greptime FluxonFS的目录传输、预扫描等持久任务状态能力还需要TiKV PD和TiKV
- 最小服务平面需要
- Docker:Quick Start 镜像链路和运行时打包链路都需要 Docker
Quick Start 用于最短路径体验;正式安装、部署和运维入口见 用户文档。
docker run --rm -it --network host \
hanbaoaaa/fluxon_quick_start:0.2.1 \
--mode kv \
--etcd-client-port 12379 \
--master-p2p-port 31000 \
--panel-port 18080 \
--greptime-http-port 14000 \
--kv-http-port 8083进入后可直接输入:
put demo:hello world
get demo:hello
del demo:hello
预期运行效果:
点击终端提示的链接,即可访问 KV Web UI:
对应接口文档:
docker run --rm -it --network host \
hanbaoaaa/fluxon_quick_start:0.2.1 \
--mode mq \
--etcd-client-port 37379 \
--kv-master-port 34200 \
--greptime-http-port 14000 \
--panel-port 18080进入后可直接输入:
put hello
put world
exit
后台 Consumer 会持续打印收到的消息。
启动后会额外打印 MQ Web UI 地址。
预期运行效果:
对应接口文档:
docker run --rm -it --network host \
hanbaoaaa/fluxon_quick_start:0.2.1 \
--mode fs \
--etcd-client-port 36379 \
--kv-master-port 34100 \
--greptime-http-port 14000 \
--panel-port 34180进入后可直接输入:
ls
echo "hello fs" > notes.txt
cat notes.txt
ui
FS Quick Start 会额外打印:
fs_s3端点Basic Auth入口,默认账号密码是admin / admin
预期运行效果:
点击终端提示的链接,即可访问 FS Web UI:
对应接口文档:
fluxon_rs/:Rust 核心实现与底层能力fluxon_py/:Python 接口、运行时与绑定deployment/:部署与运维工具链scripts/:脚本工具与辅助入口setup_and_pack/:打包与发布资源准备入口examples/fluxon_quick_start/:最小可运行环境入口fluxon_test_stack/:测试栈、Benchmark与gitops入口
欢迎参与贡献。开始之前,建议先阅读 GitHub Pages 上的开发者文档:
部分更早期的贡献记录已经无法从当前 commit 历史里完整反映,这里补充说明:
yxrxy: FluxonFS 实现和优化zTz01:KV Cache优化pakkah: RDMA 支持、VLM 探索unity1263:KV共享内存设计接入、Benchmark工具链mumupika: 初始 MQ 版本实现maplestarplayl: IPC 接入、SPDK 接入RuileLu:KV Lease功能支持Summage: 初始 KV 架构设计优化
- Eclipse iceoryx2:用于本机 IPC 路径,支撑同机 Fluxon 进程之间的本地传输。
- etcd:作为外部中间件依赖,用于服务发现、租约和元数据协同。
- GreptimeDB:作为外部中间件依赖,用于指标与可观测数据存储。
- Moka:作为缓存控制器的 fork 基础,并扩展动态容量调整能力,用于全局内存治理。
- Mooncake:保留为
KV Cachebackend wrapper,也是大对象 KV 设计和基准测试的重要参考。 - Alluxio:用于 FS 设计和评估参考,尤其是文件/对象缓存和数据本地性相关能力。
- pplx-garden:用于 RDMA 通信相关实现参考。
感谢维护者和社区的开源工作。
Fluxon 基于 Apache License 2.0 开源,见 LICENSE。























