高性能分布式对象存储系统——RustFS

最近一直在搞SpringAI

为了处理用户上传的PDF、RAG切分的块、多轮对话的临时JSON等,我使用了老牌分布式存储系统MinIO。因为老牌所以生态较为完善。

但是开始做项目的时候我发现了MinIO不友好的地方。

1. 严苛的AGPL协议
MinIO采用的是极度严格的AGPL协议,对一般人极其不友好。

2. 小文件带来的I/O问题
RAG向量化,需要把大文档切成无数个小文本块。这种海量小文件的疯狂读写MinIO显得有点“”。高并发跑起来不够丝滑,比较耗费资源

我开始寻找MinIO的平替,最终在GitHub挖到了一个项目:RustFS

什么是RustFS?

一句话总结:它是用Rust写的对象存储系统,MinIO的完美平替。

有什么优点呢?

1. 彻底告别“开源协议”焦虑

RustFS采用的是目前对商业最友好的Apache 2.0协议。可以随意修改,随意打包,没有任何法务问题。

2. 专治“小文件”高并发,性能离谱

得益于Rust没有垃圾回收,导致他处理4kb小文件的速度是MinIO的2.3倍RAG海量数据入库时,肉眼可见地变流畅了。并且打包后只有100MB左右,极轻量

3.协议完美兼容

完美兼容 S3 协议。从MinIO切到RustFS,不需要换SDK,一句代码都不用改


怎么用?

第一步:一行命令把它跑起来

Docker直接搞定

先拉取对象docker pull rustfs/rustfs

启动容器

docker run -d \
  --name rustfs_local \
  -p 9000:9000 \
  -p 9001:9001 \
  -v /tmp/rustfs/data:/data \ //本地路径用来挂载对象数据
  rustfs/rustfs:latest \
  /data

第二步:修改 Spring Boot 的yaml配置

打开application.yml,把原本MinIO的连接地址换掉

spring:
  s3:
    # 直接把 ip 指向刚用 docker 跑起来的 RustFS 地址
    endpoint: http://127.0.0.1:9000 
    access-key: admin
    secret-key: admin123
    #access-key和secret-key需要在RustFS的后台管理进行生成
    # S3 协议的通用配置,照旧保留即可
    path-style-access: true 
    region: us-east-1

第三步:代码层直接调用

业务代码怎么写?以前怎么写,现在还怎么写。因为RustFS是完美兼容S3协议的。

比如存一段 Agent 的对话上下文:

@Autowired
private S3Client s3Client;

public void saveAgentContext(String bucket, String chunkId, String jsonContent) {
    PutObjectRequest request = PutObjectRequest.builder()
            .bucket(bucket)
            .key("agent/context/" + chunkId + ".json")
            .build();
            
    s3Client.putObject(request, RequestBody.fromString(jsonContent));
}

RustFS管理后台

运行成功后,访问localhost:9001进入管理后台

  • 用户名: rustfsadmin
  • 密码: rustfsadmin

在后台可以进行一系列的操作:

  • 创建和管理Bucket
  • 查看文件列表
  • 配置访问策略
  • 生成Key——access-key和secret-key

总结

RustFS对比MinlO的优势

  • 商用协议宽松
  • 资源占用更少,性能更高
  • 配置改两行就能上,十分方便
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇