如何选型分布式文件系统

选型分布式文件系统

目前筛选出两个一样是 GoLang 实现的文件系统,今天仔细调研一下html

minio seaweedFS
它最适合存储非结构化数据,如照片,视频,日志文件,备份和容器/ VM映像。对象的大小能够从几KB到最大5TB。 SeaweedFS是一个简单且高度可扩展的分布式文件系统,两个目标: 一、存储数十亿的文件! 二、查看档案快!

minio、seaweedFS 生态粗略对比

matvQS.md.png
matvQS.md.png

minio 单机模式 快速上手

mat4MD.png
mat4MD.png

注:此集群为单机多租户,非 「swarm」或「k8s」意义上的集群git

matIqH.png
matIqH.png

登陆须要的 公钥、私钥在 docker-compose 查看登陆秘钥github

  • 系统限制占用率
matWRK.png
matWRK.png

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 做为 「对象」web

  • 简单跑了一下,可是至少是 JDK8+ ,7无法编译(最新的jar是8+)docker

  • 可直接配合 Nginxopenresty 负载安全

这里要注意 ! 若是 openResty 直接代理 minio 的 9000 端口,那么须要保证这个桶是公开的,不然须要写 LUA 脚本作验证 「虽然目前也没有存储什么敏感数据,可是这点早晚要考虑」异步

我使用 java client + 私钥 测试的,读对象只须要「桶」「对象名」两个参数便可。分布式

matfxO.png
matfxO.png

成功上传

matxsg.md.png
matxsg.md.png

web 端查看结果

mat5se.png
mat5se.png

minio 客户端 :mc 能够很是可靠的快速的大规模迁移数据

下章整理发布 《分布式文件系统迁移的经验》

SeaweedFS

相比之下没有网页上传的功能,测试同窗就没法为研发分担部分压力。

matTZd.png
matTZd.png

SeaweedFs 的 wiki 分几块:

restFull API、文件管理、配置、异步复制、操做(备份、k8s部署)、安全

总结

和 SeaweedFs 共同对比,没有发现什么刚需的功能点必需要选择 SeaweedFs 的,从「社区」「开发实力」 感受仍是 MINIO 从易用性来讲应该比 SeaweedFs 更适合咱们,不管是服务仍是工具也更全面SeaweedFs 虽然是国人写的项目,但对国人也没有很友好,Issues 处理及时率较低,不管是企业使用,仍是我的使用,我都偏向于推荐 Minio。

本文连接:github.com/pkwenda/Blo…

相关文章
相关标签/搜索