跳到主要内容

Curvine:下一代统一数据接入层,兼顾 Posix 和高速缓存

· 阅读需 8 分钟

在分布式缓存的实践过程中,我们发现用户面临着 POSIX 语义支持不足、资源消耗高、运维复杂等核心痛点。为了更好地解决这些问题,我们对 Curvine 的模式和发展路线进行了全新调整,打造这一兼具强 POSIX 语义与高性能缓存的下一代统一数据接入层,让远程数据访问体验迎来质的提升。

两种核心挂载模式,适配多样业务需求

Curvine 将数据读写模式优化为简洁的 CacheModeFsMode 两种挂载点读写模式,分别对应不同的业务场景诉求,兼顾缓存加速与完整语义支持,让用户可以根据实际需求灵活选择。

CacheMode:轻量读缓存加速,与 UFS 强绑定

CacheMode 以 UFS(底层文件系统)为核心,主要承担 UFS 的读缓存加速和统一代理角色。读写操作均以 UFS 为基准:

  • 元数据缓存可有效加速 ls 等常用操作
  • 写数据时直接写入 UFS
  • 用户能对 UFS 形成强感知,无需改变原有数据操作习惯

这是轻量提升 UFS 读取性能的优选方案。

FsMode:全量性能加速,强 POSIX 语义加持

FsMode 则以 Curvine 自身为核心,元数据由 Curvine 独立管理,其路径与 UFS 实现一一映射,UFS 仅作为 Curvine 的冷存层。该模式提供:

  • 全方位的读写缓存加速
  • 更好地支持 POSIX 语义读写
  • 完美适配大规模文件的性能加速需求
  • 是对语义完整性和性能均有高要求场景的最佳选择

FsMode 深度解析:分层设计,兼顾性能与一致性

作为 Curvine 的核心模式,FsMode 采用分层文件系统的挂载写入设计,通过清晰的语义定义和流程规划,实现了性能、语义与数据一致性的平衡。下面为大家拆解其核心设计细节。

核心语义规则

  1. 统一 IO 入口:所有数据读写操作均通过 Curvine 完成,应用仅使用 Curvine 路径,不建议直接访问 UFS,否则将无法保障数据一致性。

  2. 异步写入冷存:写数据时先落地 Curvine(包含元数据 + 块),由 Master 侧根据策略在后台定期提交 Load/Dump 任务,将数据异步刷新到 UFS(如 S3),让前端写入操作更高效。

  3. 智能读取回填:读数据时优先从 Curvine 读取;若数据已被淘汰或仅存在于 UFS,则通过 Load 操作将 UFS 数据回填至 Curvine,本次读取则直接透读 UFS,兼顾读取速度与数据可用性。

  4. 灵活副本形态:允许仅 UFS 存在数据的状态,此时 UFS 中的数据将作为该文件的唯一数据副本,最大化利用存储资源。

  5. 按需元数据同步:mount 操作时会同步目录下所有元数据,后期不再主动做全量同步;若需同步,可通过 mount resync 命令手动更新挂载点元数据(仅同步仅在 UFS 存在的文件元数据)。

  6. 缓存懒加载机制:若读取的文件在 Curvine 无元数据但在 UFS 存在,首次读取会失败,重试时将主动获取 UFS 文件;也可提前手动触发 mount resync 命令同步元数据,避免读取失败。

  7. 故障容错设计:master 故障时,用户可通过 UFS 接口正常访问数据;worker 故障时,多副本场景可访问其他副本,单副本场景则直读 UFS,保障业务连续性。

一致性设计:当下可用,未来更优

目前 FsMode 的一致性实现方案为:

  • UFS 路径首次挂载到 Curvine 时,会将该目录下的元数据整体映射至 Curvine
  • 若绕开 Curvine 直接向 UFS 写入文件,Curvine 无法自动感知
  • 可通过同步命令手动重新同步

未来规划:Curvine 将实现自动感知 UFS 的元数据变化 event 消息,准实时同步 UFS 元数据,从技术层面彻底保障数据一致性,让用户无需关注同步操作,实现无感使用。

FsMode 核心设计目标

FsMode 的所有设计均围绕明确的目标展开,确保每一项能力都能精准解决业务痛点:

  • 统一入口:所有操作通过 Curvine 路径进行,应用无需适配 UFS,降低开发和运维成本。
  • POSIX 语义:支持完整的 POSIX 文件系统语义,包含目录树、随机读写、重命名、原子性、强一致性等,适配各类传统及新型应用。
  • 分层存储:Curvine 层存储热数据(元数据 + 可选本地块),UFS 作为持久/冷副本,实现热冷数据分离,提升存储效率和访问性能。
  • 后台刷新:Master 根据业务操作与预设策略,定期提交 Load/Dump 任务,将 Curvine 数据异步刷新到 UFS,不影响前端业务。
  • 仅 UFS 副本:支持数据仅存在于 UFS(如 S3)的场景,读数据时按需回填或透读,兼顾存储灵活性与数据访问性。

CacheMode vs FsMode:一张表看懂核心差异

为了让大家更清晰地分辨两种模式的区别,精准匹配业务场景,我们整理了核心对比维度,一目了然:

对比项CacheModeFsMode
语义支持仅支持 UFS 本身语义支持完整 POSIX 语义(目录树、随机读写、重命名、原子性、强一致性等)
写入方式数据直接写 UFS,应用与 UFS 强耦合数据写 Curvine,由 JM 异步刷新到 UFS,应用仅面向 Curvine
元数据管理元数据缓存,但是与 UFS 保持强一致性元数据由 Curvine Master 维护,定期同步到 UFS,冲突以 Curvine 为准;其他接口修改 UFS 不会被 Curvine 主动感知
读取逻辑缓存存在则从 Curvine 读;无缓存则提交异步任务加载到 Curvine,本次直接从 UFS 读取优先从 Curvine 读;Curvine 无数据时由 Master 标记热数据并回填 Curvine,本次直接从 UFS 读取
数据过期处理删除 Curvine 中元数据和数据块仅删 Curvine 数据块,保留元数据
一致性保障受 UFS 约束(如 S3 最终一致性)Curvine 侧强一致;与 UFS 间通过异步任务实现最终一致

极致资源优化,轻量运行更友好

除了功能和性能的打磨,Curvine 在资源消耗上也做了深度优化,从底层技术栈到实现手段进行全方位升级:

Curvine 基于 Rust 语言构建,天生具备高性能、低资源消耗的特性;同时采用 异步零拷贝 等前沿优化手段,进一步降低资源占用。

线上实践数据显示:Curvine 的单 worker 进程占用内存资源不足 1G。在大规模集群部署时,能有效减少服务器资源投入,降低运维成本,即使是资源紧张的场景也能轻松适配。

产品哲学:不做替代,只做更好的数访方式

Curvine 从一开始就有着清晰的产品定位:

不追求成为通用 POSIX 文件系统,也不试图替代任何存储产品。

我们始终专注于一件事:在不改变用户原有数据操作习惯的前提下,让远程数据访问快到感觉不到"远程"。这不仅是技术层面的挑战,更是 Curvine 的核心产品哲学——最好的基础设施,就是让人感觉不到它的存在。

在 AI 时代,数据量呈爆炸式增长,远程数据访问的性能和体验成为影响业务效率的关键因素。Curvine 融合了分布式缓存技术智慧与分布式文件系统的 POSIX 完整性,同时坚守"元数据透明、文件结构不变"的核心原则,无需用户对现有业务系统做大幅改造,即可实现远程数据访问性能的跃升。

未来,Curvine 将持续深耕统一数据接入层领域,不断优化性能、稳定性、完善语义支持、简化运维流程,致力于成为 AI 时代数据基础设施的关键一环,为各类业务的数字化升级提供高效、稳定、轻量的数据访问支撑。

最后,希望更多的存储、Rust 领域的开源爱好者共同加入,共建共享!


Powered by OPPO Bigdata.