fractalbits-labs/fractalbits

GitHub: fractalbits-labs/fractalbits

FractalBits是一个专为AI和大数据设计的高性能S3兼容对象存储系统,解决存储性能瓶颈和成本问题。

Stars: 271 | Forks: 13

# FractalBits **高性能 S3 兼容对象存储** [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/30678cae66041118.svg)](https://github.com/fractalbits-labs/fractalbits/actions/workflows/ci.yml) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ## 概述 FractalBits 是一个 S3 兼容的对象存储系统,专为高性能和低延迟而设计。使用我们自研的存储引擎,单个存储桶可实现高达 **100 万次 4K 读取 IOPS**,p99 延迟约 5ms,成本远低于 AWS S3 Express One Zone。与标准 S3 不同,FractalBits 提供**对对象和目录的原生原子重命名支持**。 **分形 ART** (自适应基数树) 存储引擎采用全路径命名方法,避免了传统基于 inode 的系统所需的重量级分布式事务,在提供目录语义(包括原子重命名等)的同时,实现了卓越的可扩展性。这使得 FractalBits 成为需要原子操作来管理数据集和检查点的 AI 训练管道和数据处理工作流的理想选择。 API 网关和控制平面使用 Rust 构建,性能关键的存储引擎和数据平面使用每核心的 io_uring 进行异步 I/O。这种组合在保持超低延迟的同时,能够实现每秒数十万次操作。 **核心亮点:** - 🚀 **约 100 万 IOPS** (4KB 对象),单个存储桶 p99 延迟约 5ms - 🔄 **原子重命名支持** - 适用于对象和目录 - 标准 S3 所缺乏的原生能力 - ⚡ **分形 ART** 全路径存储引擎,提供卓越性能和可扩展性 - 💰 **高性价比** - 对于小对象工作负载,成本远低于 AWS S3 Express One Zone - 🌐 **5 分钟自带云部署** - 可通过 `just deploy` 部署到**任何** AWS/GCP 区域 ## 性能基准 FractalBits 的性能超越 AWS S3 Express One Zone: ### GET 工作负载 | 指标 | 值 | |--------|-------| | IOPS | 982552.31 | | 吞吐量 | 3838.09 MiB/s | | 平均延迟 | 2.9 ms | | P99 延迟 | 5.3 ms | ![GET 4K 性能](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/464e5efcdc041119.png) *基准测试截图,显示 4KB 对象的 GET 性能达到约 100 万 IOPS* ### PUT 工作负载 | 指标 | 值 | |--------|-------| | IOPS | 333308 obj/s | | 吞吐量 | 1301.98 MiB/s | | 平均延迟 | 4.4 ms | **基准配置:** - 对象大小:4 KiB - 实例类型:14 个 c8g.xlarge (API),6 个 i8g.2xlarge (BSS),1 个 r7g.4xlarge (NSS) - 成本:基于 AWS 按需 EC2 实例定价,约 $8/小时 - 复制:3 副本数据 Blob 法定人数,6 副本元数据 Blob 法定人数 - AWS 区域:us-west-2 - 工作负载:基于 warp 的 S3 负载测试 *您可以按照下面的 [自带云部署](#byocbring-your-own-cloud) 部分自行验证这些性能指标。* ## 架构 有关 FractalBits 的架构、组件、技术栈和设计决策的详细信息,请参阅 [架构文档](docs/internals/ARCHITECTURE.md)。 ## 快速开始 - 本地开发 ### 前置条件 有关开发前置条件和设置的详细信息,请参阅 [HACKING.md 中的前置条件部分](docs/HACKING.md#prerequisites)。 **注意**:本指南为方便使用 [`just`](https://github.com/casey/just) 命令运行器。所有 `just` 命令也可以使用 `cargo xtask` 运行(例如,`cargo xtask build`,`cargo xtask service`)。 ### 构建 克隆仓库并构建所有组件: ``` git clone https://github.com/fractalbits-labs/fractalbits.git cd fractalbits # Initialize repo just repo init # Build all components just build ``` ### 运行服务 在本地初始化并启动所有服务: ``` # Initialize service configuration just service init # Start all services (API, BSS, NSS, RSS) just service start # Check service status just service status # Check service with normal systemd commands systemctl --user status api_server journalctl --user -u api_server ``` 服务将可在以下地址访问: - **API 服务器**:`http://localhost:8080` (S3 API 端点) ### 基本使用示例 服务运行后,使用任何 S3 兼容客户端: ``` # Export AWS environment variables to use our own service export AWS_DEFAULT_REGION=localdev export AWS_ENDPOINT_URL_S3=http://localhost:8080 export AWS_ACCESS_KEY_ID=test_api_key export AWS_SECRET_ACCESS_KEY=test_api_secret # Create a bucket aws s3 mb s3://my-bucket # Upload an object echo 'Hello FractalBits!' > test.txt aws s3 cp test.txt s3://my-bucket/ # Download an object aws s3 cp s3://my-bucket/test.txt downloaded.txt # List objects aws s3 ls s3://my-bucket # Stop services when done just service stop # Unset environment variables, or exit unset AWS_DEFAULT_REGION AWS_ENDPOINT_URL_S3 AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY ``` ### 运行测试 执行 S3 API 兼容性测试套件: ``` # Run S3 API regression tests just precheckin --s3-api-only # Run with all unit tests also just precheckin ``` ## 快速开始 - Docker 在单个 Docker 容器中运行 FractalBits,用于快速测试和评估。 Docker 镜像将所有服务(API 服务器、BSS、NSS、RSS)捆绑到一个由 `container-all-in-one` 二进制文件编排的单个容器中。 ### 使用 `just` 命令 (推荐) ``` # Build Docker image (uses debug build by default) just docker build # Build release Docker image just docker build --release # Run container (foreground) just docker run # Run container with custom port just docker run --port 9080 # Run container in background just docker run --detach --name fractalbits-dev # View logs just docker logs --name fractalbits-dev --follow # Stop container just docker stop --name fractalbits-dev ``` ### 直接使用 Docker 由于存储引擎使用 io_uring 进行高性能异步 I/O,容器需要 `--privileged` 模式。 ``` # Run the latest image docker run --rm --privileged -p 8080:8080 ghcr.io/fractalbits-labs/fractalbits:latest # Run a specific version docker run --rm --privileged -p 8080:8080 ghcr.io/fractalbits-labs/fractalbits: # Run your custom-built image (after `cargo xtask docker build`) docker run --rm --privileged -p 8080:8080 fractalbits:latest # Run in background with persistent data docker run -d --privileged --name fractalbits \ -p 8080:8080 \ -v fractalbits-data:/data \ ghcr.io/fractalbits-labs/fractalbits:latest ``` 运行后,请参阅 [基本使用示例](#basic-usage-example) 了解 S3 客户端命令。 ## 自带云部署 FractalBits 使自带云部署变得简单:构建一次,单个命令部署,在 5 分钟内即可在 AWS/GCP 上启动完全可操作的云存储系统。 ### 从源代码构建 (可选) 默认情况下,部署使用预编译的二进制文件。要构建和部署您自己的二进制文件: ``` # Make sure cargo-zigbuild is installed for cross-compilation cargo install --locked cargo-zigbuild # Build binaries for deployment just deploy build ``` ### 部署到 AWS 请确保您的 [AWS CLI 配置设置](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html) 已正确设置。 ``` # Deploy with perf_demo template (14 API servers, 42 bench clients, 6 BSS nodes) # Use "mini" template for a single instance of each node type. just deploy create-vpc --template perf_demo --with-bench # View deployed stack information just describe-stack # Log into ec2 instance nodes aws ssm start-session --target # If the VPC is created with `--with-bench`, you can log into bench_server to run # pre-defined benchmark workloads (get_4k, put_4k, mixed_4k, get_64k, put_64k, mixed_64k) WORKLOAD=get_4k /opt/fractalbits/bin/bench_start.sh # Destroy VPC infrastructure (including S3 builds bucket cleanup), which needs confirmation just deploy destroy-vpc ``` ## S3 API 兼容性 FractalBits 支持最常用的 S3 操作,并具有完整的 AWS Signature V4 身份验证。有关完整的详细信息,包括支持的操作、扩展 API、身份验证和限制,请参阅 [S3 API 兼容性](docs/S3_API_COMPATIBILITY.md)。 我们正在积极扩展 S3 API 的覆盖范围。请查看我们的 [路线图](docs/ROADMAP.md) 了解计划的功能和时间表。 ## 支持 - 📖 **文档**:查看 [docs/](docs/) 目录 - 🐛 **错误报告**:[GitHub Issues](https://github.com/fractalbits-labs/fractalbits/issues) - 💬 **讨论**:[GitHub Discussions](https://github.com/fractalbits-labs/fractalbits/discussions) - 👥 **Slack**:[加入 FractalBits 社区](https://join.slack.com/t/fractalbitscommunity/shared_invite/zt-3j9b3iw0l-NFSW3cjo~DEF~jqfBp1mzA) - 📧 **邮件**:thomas@fractalbits.com (用于私人咨询) **为高性能对象存储倾心打造 ❤️**
标签:AI存储, AI训练, BYOC, io_uring, POSIX兼容, Rust语言, S3兼容, 云原生存储, 云存储, 代码示例, 低延迟, 分布式存储, 原子操作, 可视化界面, 多协议存储, 大数据存储, 存储引擎, 实时存储, 对象存储, 并发I/O, 成本效益, 数据分析, 数据管理, 文件系统, 漏洞利用检测, 请求拦截, 通知系统, 高吞吐, 高性能存储