选型分布式文件系统
目前筛选出两个同样是 GoLang 实现的文件系统,今天仔细调研一下
minio | seaweedFS |
---|---|
它最适合存储非结构化数据,如照片,视频,日志文件,备份和容器/ VM映像。对象的大小可以从几KB到最大5TB。 | SeaweedFS是一个简单且高度可扩展的分布式文件系统,两个目标: 1、存储数十亿的文件! 2、查看档案快! |
minio、seaweedFS 生态粗略对比
-
minio、seaweedFS 均为 goLang 编写,都可以交叉编译为「全平台」支持,都提供了官方 「docker」 镜像
-
seaweedFS 对外供给 REST 接口 , 实现主要参考了 facebook 的论文: 《Finding a needle in Haystack: Facebook’s photo storage》
minio 单机模式 快速上手
- minio 集群模式快速部署 – docker-compose
注:此集群为单机多租户,非 「swarm」或「k8s」意义上的集群
登录需要的 公钥、私钥在 docker-compose 查看登录秘钥
- 系统限制占用率
minio 一些特性总结一览
- minio 集群要求:所有节点硬盘总和:最小4块盘 最多16块盘(受限纠删码)、n/2可读 n/2+1可写,eg:4个节点8快盘,宕掉一半(n/2) -依旧可读,5块(n/2+1)-才能写,<4块读不了。
- 可建立无限个桶,每个桶无限对象,每个对象最大5T,每次上传最多批量 10k 个对象,每次请求最多 1k 个对象
- minio事件通知原生支持:es**「不过仅支持 > 5.0」**、AMQP、MQTT、Redis、NATS、kafka、Webhooks
- 因为 「纠删码」的原因 最大只支持 16块硬盘,限制了我们的存贮量,所以 minio 提供了一个 「超大桶」支持 PB 级别,原理大概是扩展多个纠删码,提供了『单机』扩展和『分布式』扩展方案
Minio 接入现有应用的分析
-
可以考虑将 COMPANYID 作为 「桶」… 图片、文档、html 作为 「对象」
-
简单跑了一下,但是至少是 JDK8+ ,7没法编译(最新的jar是8+)
这里要注意 ! 如果 openResty 直接代理 minio 的 9000 端口,那么需要保证这个桶是公开的,否则需要写 LUA 脚本做验证 「虽然目前也没有存储什么敏感数据,但是这点迟早要考虑」
我使用 java client + 私钥 测试的,读对象只需要「桶」「对象名」两个参数即可。
成功上传
web 端查看结果
minio 客户端 :mc 可以非常可靠的快速的大规模迁移数据
下章整理发布 《分布式文件系统迁移的经验》
SeaweedFS
相比之下没有网页上传的功能,测试同学就无法为研发分担部分压力。
SeaweedFs 的 wiki 分几块:
restFull API、文件管理、配置、异步复制、操作(备份、k8s部署)、安全
总结
和 SeaweedFs 共同对比,没有发现什么刚需的功能点必须要选择 SeaweedFs 的,从「社区」「开发实力」 感觉还是 MINIO 从易用性来说应该比 SeaweedFs 更适合我们,不论是服务还是工具也更全面SeaweedFs 虽然是国人写的项目,但对国人也没有很友好,Issues 处理及时率较低,无论是企业使用,还是个人使用,我都偏向于推荐 Minio。
今天的文章如何选型分布式文件系统分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/16133.html