RustFS 架构
RustFS 是一个高性能对象存储系统,兼容 AWS S3 API。它具有简洁、轻量级、可扩展和去中心化的架构。
对象可以是文档、视频、PDF 文件或任何其他非结构化数据。RustFS 提供了一个可扩展、灵活且高效的解决方案,用于存储、访问和管理这些数据。其与 AWS S3 API 的兼容性使其能够与现有基于 S3 的应用程序无缝集成。
下图展示了其架构

此图表示 RustFS 的基本架构。分布式网格使用多个节点来执行单个任务,并通过网络连接以实现通信。
一致性设计
在分布式和单机模式下,所有读写操作都严格遵循写后读一致性模型。
关键概念
对象(Object):RustFS 中最基本的存储单元,表示文件、字节流或任何非结构化数据。
存储桶(Bucket):用于存储对象的逻辑容器。数据在存储桶之间隔离。对于客户端而言,其功能类似于顶层目录。
驱动器(Drive):存储数据的物理磁盘,在 RustFS 启动时作为参数传入。RustFS 中的所有对象数据都存储在这些驱动器上。
集合(Set):一组驱动器。分布式部署根据规模自动将集群划分为一个或多个集合。每个集合中的驱动器分布在不同的位置。一个对象存储在一个集合中。(有时也称为 条带(Stripes))。
在设计架构和部署设备时请考虑以下事项
- 一个对象存储在一个集合中。
- 一个集群被划分为多个集合。
- 一个集合中的驱动器数量是固定的,系统默认根据集群规模自动计算。
- 一个集合中的驱动器应尽可能分布在不同的节点上。
架构设计
传统分布式存储架构通常依赖于独立的 Master 节点、Metadata 节点和 Data 节点。这种复杂性可能使部署充满挑战,并引入单点故障——如果元数据丢失,数据完整性将面临风险。
RustFS 采用去中心化的点对点架构,所有节点都是平等的。这种设计极大地简化了部署,并消除了元数据瓶颈。只需一条命令即可启动系统。
RustFS 从 MinIO 优雅且可扩展的架构中汲取灵感,采用了类似的设计理念,在不牺牲功能的前提下优先考虑简单性和可靠性。我们认可 MinIO 在推广 S3 协议和为对象存储架构设定高标准方面所做的贡献。