FileCenter

分布式文件存储系统 · Master-Storage 架构 · 高可用高可靠

PB 级
存储容量
1000+
节点扩展
3副本
默认冗余
Go
纯 Go 实现

产品概述

FileCenter 是一款完全自主研发的分布式文件存储系统,采用 Go 语言编写,基于 Master-Storage 两层架构,支持海量文件的上传、下载、存储和管理。系统提供高可用性、高可靠性、水平扩展、大文件分片存储、数据完整性校验等企业级特性。

FileCenter 定位于云存储服务、媒体资源管理、大数据备份、微服务文件服务等场景,提供比传统单节点文件存储更高的可用性和可扩展性,同时保证优秀的读写性能和数据安全性。

技术架构

+-------------------+     +-------------------+
|    Client App     |     |    Client CLI     |
+--------+----------+     +--------+----------+
         |                          |
         |     REST API (外部)       |
         +-----------+--------------+
                     |
          +----------v-----------+
          |   Master Node        |
          |   (元数据管理)         |
          +---+----+----+----+---+
              |    |    |
              | 内部REST API    |
    +---------+    |    +---------+
    |              |              |
+---v---+    +-----v--+    +-----v--+
|Storage|    |Storage |    |Storage |
|Node 1 |    |Node 2  |    |Node 3  |
+-------+    +--------+    +--------+
应用层
命令行客户端 REST API SDK HTTP 客户端
网络层
RESTful HTTP 流式传输 断点续传
Master 节点
元数据管理 节点注册 分片分配 心跳检测 副本管理 再平衡
Storage 节点
分片存储 分片读写 校验和验证 心跳上报 分片复制
核心模块
SHA256 校验和 配置解析 日志系统 错误码体系

核心特性

🏗️ Master-Storage 架构

清晰的两层架构,Master 负责元数据管理和集群协调,Storage 负责实际数据存储,职责分离,易于扩展。

📦 自动分片存储

大文件自动切分为固定大小分片(默认 64MB),支持 PB 级别超大文件存储,分片级别的读写并行提升性能。

🔄 多副本冗余

可配置副本因子(默认 3 副本),副本分散在不同节点,单节点故障不影响数据可用性,自动修复机制。

🚀 水平扩展

支持动态添加/移除存储节点,在线扩缩容对用户透明,理论支持 10~1000 个节点,总容量 PB 级别。

🔒 数据完整性

SHA256 校验和机制,上传/下载时校验,定期数据巡检,损坏数据自动检测与修复,传输过程加密可选。

💔 断点续传

上传支持断点续传,下载支持标准 HTTP Range,大文件传输中断后无需重传整个文件,节省带宽和时间。

❤️ 心跳检测

Storage 节点定期向 Master 上报心跳,超时自动标记为离线,触发副本修复,保证集群健康状态。

⚖️ 负载均衡

基于节点可用空间分配分片,避免单点过热,定期再平衡,优化集群空间利用率,提升整体性能。

🔧 RESTful API

简洁易用的 REST API,支持文件上传/下载/删除/列表/信息查询,节点管理,系统状态监控,易于集成。

📊 监控指标

内置系统状态查询,节点列表查询,容量统计,分片统计,方便运维监控和告警。

⚙️ 灵活配置

INI 格式配置文件,支持命令行参数覆盖,环境变量覆盖,配置热加载,适配不同部署环境。

🛡️ 安全认证

节点间可配置 Token 认证,传输支持 TLS 加密,可选双向认证,保障数据传输安全。

API 文档

客户端 API(Master 节点提供)

接口方法说明
/api/v1/files/uploadPOST上传文件(支持断点续传)
/api/v1/files/downloadGET下载文件(支持 HTTP Range 断点续传)
/api/v1/files/infoGET获取文件信息
/api/v1/filesGET列出文件(支持分页)
/api/v1/files/deleteDELETE删除文件
/api/v1/nodesGET列出存储节点
/api/v1/statusGET系统状态

上传文件示例

# 使用 curl 上传文件 curl -X POST http://localhost:8000/api/v1/files/upload \ -F "file=@test.zip" # 响应示例 { "code": 200, "success": true, "data": { "file_id": "file_abc123", "upload_id": "upload_xyz789", "file_name": "test.zip", "file_size": 104857600, "status": "completed", "progress_percent": 100.0 } }

下载文件示例

# 下载完整文件 curl -O http://localhost:8000/api/v1/files/download?file_id=file_abc123 # 断点续传(从第 1MB 开始下载) curl -O http://localhost:8000/api/v1/files/download?file_id=file_abc123 \ -H "Range: bytes=1048576-"

快速开始

1. 配置文件

# master.ini [node] type = master id = master-01 listen_host = 0.0.0.0 listen_port = 8000 data_dir = ./data/master log_dir = ./logs [master] replication_factor = 3 chunk_size = 67108864 heartbeat_timeout = 30 api_port = 8000
# storage.ini [node] type = storage id = storage-01 listen_host = 0.0.0.0 listen_port = 9000 data_dir = ./data/storage log_dir = ./logs [storage] max_capacity = 1099511627776 report_interval = 10 master_endpoint = http://localhost:8000

2. 启动服务

# 启动 Master 节点 master.exe # 启动 Storage 节点(另一个终端) storage.exe

3. 使用命令行客户端

# 上传文件 fc.exe upload test.zip # 下载文件 fc.exe download file_abc123 -o output.zip # 列出文件 fc.exe list # 删除文件 fc.exe delete file_abc123

配置说明

配置项类型默认值说明
node.typestring-节点类型:master 或 storage
node.idstring-节点唯一标识
node.listen_hoststring0.0.0.0监听地址
node.listen_portint8000/9000监听端口
node.data_dirstring./data数据存储目录
master.replication_factorint3副本因子
master.chunk_sizeint67108864分片大小(字节,默认 64MB)
master.heartbeat_timeoutint30心跳超时时间(秒)
storage.max_capacityint1TB最大存储容量
storage.report_intervalint10心跳上报间隔(秒)
storage.master_endpointstring-Master 节点地址

立即下载

选择合适的版本开始使用 FileCenter

📦 下载完整包

版本: v1.0.0 | 平台: Windows amd64

包含: master.exe (主节点) + storage.exe (存储节点) + fc.exe (客户端) + 配置文件示例 + 部署文档