MinIO祭了,RustFS来了!

背景

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

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

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

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

部署安装

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

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

安装方式

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

环境验证

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

拉取镜像

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

bash 复制代码
docker pull rustfs/rustfs

启动容器

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

我这里的启动脚本如下

ini 复制代码
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 访问控制台

验证访问

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

复制代码
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的,我这里就只是修改了一下配置参数,其余代码一点不带动的,测试效果也非常好。

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

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

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

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

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

操作过程如下gif

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

结语

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

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

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

最后,祝祖国繁荣昌盛。

相关推荐
weixin_462446239 小时前
使用 Go 实现 SSE 流式推送 + 打字机效果(模拟 Coze Chat)
开发语言·后端·golang
JIngJaneIL9 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
小信啊啊9 小时前
Go语言切片slice
开发语言·后端·golang
Victor35611 小时前
Netty(20)如何实现基于Netty的WebSocket服务器?
后端
缘不易11 小时前
Springboot 整合JustAuth实现gitee授权登录
spring boot·后端·gitee
Kiri霧11 小时前
Range循环和切片
前端·后端·学习·golang
WizLC11 小时前
【Java】各种IO流知识详解
java·开发语言·后端·spring·intellij idea
Victor35611 小时前
Netty(19)Netty的性能优化手段有哪些?
后端
爬山算法11 小时前
Netty(15)Netty的线程模型是什么?它有哪些线程池类型?
java·后端
白宇横流学长12 小时前
基于SpringBoot实现的冬奥会科普平台设计与实现【源码+文档】
java·spring boot·后端