V 友们好,
最近在研究和参与 AI 训练加速以及大数据场景的存储优化,关注到了一个挺有意思的开源分布式缓存系统 Curvine,试用和压测下来效果不错,分享给有类似需求的朋友们。
👉 项目地址:https://github.com/CurvineIO/curvine
💡 它解决什么痛点?
大家在做 AI 训练(比如 Agent 频繁读写小文件、模型权重分发)或者大数据 Shuffle / 热表读取时,如果直接读写云上的对象存储( S3 / OSS / GCS ),通常会有两个痛点:
- API 费用高 + 延迟大(特别是频繁读写小文件)。
- 现有的缓存方案(比如 JVM 系的 Alluxio ,或者某些 Go 实现)在极高并发和小文件场景下,GC 开销和内存占用居高不下,元数据也容易遭遇瓶颈。
Curvine 是用 Rust + Tokio 重新写的一套分布式文件语义缓存层,主打的就是把性能和资源利用率做到极致。
🛠️ 觉得比较亮点的技术特性
-
Rust 无 GC & 内存极省:基于 Tokio 异步运行时,内存占用很低。官方压测和实际跑下来的数据,相比传统 JVM 方案内存消耗降了 90%+,CPU 也有明显降低。
-
低延迟与高并发:保持 ~100μs 级的读写延迟,单集群支持 10 万+ QPS 和 50 亿级小文件。
-
元数据结构透传(不破坏底层对象存储):这个设计很友好!不像某些方案会把文件打碎存进 S3 ,Curvine 的文件路径跟底层 S3/OSS 是一一对应的。哪怕缓存集群临时挂了,S3 上的文件依然保持原样,可以直接拉取,不担心数据被绑架。
-
云原生 & 接入无感:
-
支持 POSIX / FUSE / Kubernetes CSI 驱动。K8s 挂载 PVC 响应很快,不触发云厂商 Control-Plane API 。
-
具备透明代理模式,业务代码基本不用动。
-
多级缓存:内存 -> SSD -> HDD 自动分级与热数据提升。
📊 性能跑分(从项目文档摘出来的关键数据)
- 元数据操作(并发 40 ):
- Open QPS:Curvine
60,376vs JuiceFS50,000vs 原生 OSS3,900 - Rename QPS:Curvine
43,009vs JuiceFS21,000vs 原生 OSS200
- 随机/顺序读写吞吐(对比 Open Source Alluxio ,256K Random Read ):
- 16 线程下,Curvine 达到 5.2 GiB/s,Alluxio 为 0.4 GiB/s ;高线程下基本上能吃满网卡带宽。
项目目前已经加入 CNCF Sandbox,采用 Apache 2.0 协议,完全开源。
感兴趣或者平时也有 S3/OSS 读写慢、AI 训练加载数据卡顿、K8s 共享文件挂载、大数据 Shuffle 性能瓶颈 困扰的朋友可以去看看或踩踩坑:
大家平时在做存储/缓存选型时(比如 Alluxio / JuiceFS / MinIO / Ceph ),最看重哪些指标或者遇到过什么难受的坑?欢迎交流探讨!