技术架构
本章节将深入介绍 Curvine 的技术架构,详细剖析其各层组件的功能、交互方式以及设计理念,帮助你全面了解 Curvine 系统的工作原理。
整体架构概述
Curvine 采用分层设计的分布式架构,各组件职责明确,具备良好的可扩展性和高可用性。整个架构主要分为三层:控制层(Master)、存储层(Worker)、接入层(客户端:FUSE、SDK、CLI、S3 网关),共同完成数据的存储、处理和管理。
Curvine 由三个核心服务角色、客户端与 UFS 组成:

Curvine 客户端:数据读写由客户端通过 RPC 完成(元数据访问 Master,块数据访问 Worker)。支持的接入方式包括:
- FUSE:POSIX 兼容挂载,作为本地存储使用
- Hadoop Java SDK:面向 Hadoop 生态的 Java 客户端
- Rust / Python SDK:Rust、Python 原生 SDK
- S3 网关:S3 兼容对象 API
- CLI(cv):命令行管理、mount、fs 操作、load、report、node
Master:核心控制节点,负责元数据(目录树、文件 inode、块位置)、Worker 注册、块分配与 UFS 挂载表。可多节点组成 Raft 组实现高可用,仅 Raft Leader 处理元数据写入。
Worker:存储块数据并响应块读写 RPC,通过心跳向 Master 上报;不保存文件系统元数据。
UFS:底层存储(S3、HDFS 等)通过 Curvine 数据编排访问;Curvine 在已挂载的 UFS 路径与原生路径上提供统一文件系统视图。
部署拓扑与组件角色见 部署架构;内部数据流(journal、回放、客户端读写)见 基本架构。
高性能设计
Curvine为了实现高性能、高并发、低资源消耗的目标,采用了以下技术和设计原则:
- 纯Rust实现:Curvine 采用纯 Rust 语言实现,避免了传统语言的性能瓶颈和资源消耗,同时也保证了代码的安全性和稳定性。
- 高性能RPC框架:Curvine实现了自定义rpc通信框架,支持高效的数据传输,在框架内实现了异步IO和零拷贝;
- 零成本抽象: 零成本抽象设计,核心模块直接对接底层系统,避免了不必要的抽象层,提高了系统性能和资源利用率。
- 异步IO:异步IO设计,充分利用了系统资源,避免了阻塞等待,提高了系统的并发处理能力。
- 零拷贝:零拷贝设计,避免了数据的复制和内存的分配,减少了系统的内存占用和资源消耗。
高可用设计
Curvine 采用分布式架构设计,通过多副本机制和故障转移机制保证系统的高可用性。
- Raft协议:使用用 Raft 协议实现分布式一致性,保证数据的一致性和可靠性。
- 故障转移机制:故障自动转移,当主节点故障时,自动切换到备用节点,保证系统的高可用性。
- 多副本机制:多副本机制,保证数据的冗余备份,提高系统的可靠性和容错能力。
- 快照机制:轻量级快照机制,定期备份数据,提高系统的恢复速度和稳定性。