MinIO祭了,RustFS来了!

背景

近期在做一个新项目,做的文件上传模块时,我这边是提供了3种文件存储方式,分别是本地存储,基于SMB协议的存储和基于S3协议的对象存储。

前两个不用说,主要是开发场景和满足一些兼容性场景而做的,而标准的文件存储方案,应该是基于S3协议的存储对象方案,可以是aws的s3,阿里云的oss等之类的云方案,也可以是基于私有云或者混合云方案比如MinIO,FastDFS等。

而众所周知,MinIO前阵子突然政策调整,原有的web控制台屏蔽了大部分的功能,接口方面也只有bucket相关的管理接口保留,几乎是不可用的状态,说白就是不让免费用了。当然退回到以前的版本目前来说还是可以用的,但对大部分开发者来说,无疑要积极寻找替代方案了。像前面提到的FastDFS就是一个很好的方案,但安转部署相对复杂,不能像MinIO那样开箱即用,对团队技术要求比较高,也就是不是所有MinIO的用户都有能力迁移到FastDFS之类的方案。

刚犯困就有人递枕头,RustFS这不就来了吗,还是纯国人开发,截止到今天(2025.9.3),已经发布了1.0的alpha版本,几乎可以部署到生产环境了,距离真正可以大规模部署,并替代MinIO之类S3协议的对象存储方案,只有一步之遥。

部署安装

结合RustFS官网提到的,他对S3协议是100%兼容,我今天在本地使用Docker部署了一下,然后试了一下以前写的上传文件到MinIO的程序,仅仅只修改端点地址和认证信息,其余完全不用动,甚至引入的MinIO SDK都不用修改,就可以直接切到RustFS上,非常丝滑。

接下来,我简单介绍下我这边实践的案例,在此之前,我还是建议各位感兴趣的小伙伴,先看一下官网的介绍👉:https://rustfs.com/

安装方式

关于RustFS的安装,官方提供了4种方式,Linux,MacOS,Docker和Windows,其中Windows的方案只给了安装说明,还没有安装文件,所有,为了快速验证,我这里使用的是基于Docker的方案

环境验证

使用Docker方案的话,对环境的要求不多,主要是docker版本高于20.10就ok,其他的要求和安装其他容器大体一样,防火墙,配置文件等,具体大家可以参照官网说明。

拉取镜像

这个也没啥好说,开发环境的话,直接使用最新的镜像即可

bash 复制代码
docker pull rustfs/rustfs

启动容器

镜像拉取下来后,可以启动容器了,这点官方文档的说明很详细,基本是照着生产部署级别写的,而实际上我们如果只在本地测试的话,可以不用那么复杂,毕竟技术验证阶段,快速跑通,降低心智负担是第一位的。

我这里的启动脚本如下

bash 复制代码
docker run -d \
  --name rustfs \
  --rm \
  -p 9000:9000 \
  -p 7000:7000 \
  -v $(pwd):/data \
  -e RUSTFS_ACCESS_KEY=rustfsadmin \
  -e RUSTFS_SECRET_KEY=rustfsadmin \
  -e RUSTFS_CONSOLE_ENABLE=true \
  -e RUSTFS_ADDRESS=:9000 \
  -e RUSTFS_SERVER_DOMAINS=localhost:9000 \
  rustfs/rustfs:latest

简单说明一下各参数,更具体的可以参见官方文档。

  • -d:后台运行容器
  • --name rustfs 给容器命名,方便管理
  • -p 9000:9000 映射宿主机 9000 端口到容器(S3 API 和 Console)
  • -p 7000:7000 如果启用了其他服务(如 play server),也需要映射
  • -v $(pwd):/data 挂载当前目录为数据卷
  • -e RUSTFS_ACCESS_KEY=... 设置 S3 访问密钥
  • -e RUSTFS_SECRET_KEY=... 设置 S3 秘密密钥
  • -e RUSTFS_CONSOLE_ENABLE=true 启用 Web 控制台(关键!)
  • -e RUSTFS_ADDRESS=:9000 指定监听地址和端口
  • -e RUSTFS_SERVER_DOMAINS=localhost:9000 允许从 localhost 访问控制台

验证访问

启动后,可以在容器里看到一些日志输出,说正常启动了,这里可以在控制台里输入

bash 复制代码
docker logs rustfs

如果你也用的Docker desktop的话,也可以直接查看容器输出的实时日志👇

S3客户端验证

如果之前用过MinIO的话,本地应该会安装mc的客户端,这也是官方提供的验证方式,当然其他S3客户端也是ok的,我没试,只测试了mc,可以说非常丝滑

bash 复制代码
# 建立连接
mc alias set rustfs http://localhost:9000 rustfsadmin rustfsadmin
# 创建bucket
mc mb rustfs/test
# 传个文件
mc cp G:\test.jpg rustfs/test
# 看一下传上去没
mc ls rustfs/test

执行截图👇

至此,基本的安装和技术验证可以告一段落,接下来再试一下对接开发效果如何

注意,我这里的案例,只适用于快速在开发场景中验证RustFS的可用性,不适合生产环境,建议仔细阅读官方文档。

开发测试

开发测试的代码,我在之前写过一篇博客,是基于MinIO的,我这里就只是修改了一下配置参数,其余代码一点不带动的,测试效果也非常好。

为了精简文章内容,原来的代码我就不贴了,大家可以在这里去看

👉:掘金博客地址:https://juejin.cn/post/7418363736413077514

👉:公众号文章地址:https://mp.weixin.qq.com/s/uXR6WxDI9KVsr_X2IB2R6Q

修改的地方,只有配置文件

json 复制代码
"MinioSettings": {
  "Endpoint": "localhost:9000",
  "AccessKey": "rustfsadmin",
  "SecretKey": "rustfsadmin",
  "UseSSL": false
}

操作过程如下gif

代码的话,我觉得不是很重要,就不贴了,感兴趣可以去上面提到的2个地址了解一下,而且现在有AI了,写一个基于RustFS的操作类也很方便,最主要的还是思路的验证。

结语

好了至此,整个部署安装和开发验证环节结束。

可以说RustFS现阶段的表现,可以很好的支撑起在内部构件一个企业级的对象存储集群,相较于MinIO来说,我觉得不能说是替代了,它比RustFS表现更出彩。还是推荐搭建看一下官方的介绍和社区讨论,RustFS值得你花点时间去了解。

然后,今天是9.3,上午看了阅兵,非常非常提气,下午花了点时间验证了RustFS,效果好的也让我感觉到非常非常提气,这是国人开发的,我们的软硬件实力真的越来越强大。

最后,祝祖国繁荣昌盛。

图片来自新华社:https://news.cctv.com/2025/09/03/ARTIqvL4KMXLEiNjQw5YMwFk250903.shtml

相关推荐
盖世英雄酱581365 分钟前
java 深度调试【第一章:堆栈分析】
java·后端
lastHertz22 分钟前
Golang 项目中使用 Swagger
开发语言·后端·golang
渣哥23 分钟前
面试高频:Spring 事务传播行为的核心价值是什么?
javascript·后端·面试
调试人生的显微镜28 分钟前
iOS 代上架实战指南,从账号管理到使用 开心上架 上传IPA的完整流程
后端
本就一无所有 何惧重新开始32 分钟前
Redis技术应用
java·数据库·spring boot·redis·后端·缓存
低音钢琴1 小时前
【SpringBoot从初学者到专家的成长11】Spring Boot中的application.properties与application.yml详解
java·spring boot·后端
越千年1 小时前
用Go实现类似WinGet风格彩色进度条
后端
淳朴小学生1 小时前
静态代理和动态代理
后端
渣哥1 小时前
数据一致性全靠它!Spring 事务传播行为没搞懂=大坑
javascript·后端·面试