超简单,MinIO 搭建私有化文件服务 - 今日头条 (1)

本文由 简悦 SimpRead 转码, 原文地址 www.toutiao.com

之前一直使用 MongoDB 的 GirdFS 存储文件,在并发处理能力和扩容能力上没有遇到问题。但是使用总是不够变量,各种功能都需要自己开发。

之前一直使用 MongoDB 的 GirdFS 存储文件,在并发处理能力和扩容能力上没有遇到问题。但是使用总是不够变量,各种功能都需要自己开发。存储上是 wt 文件,无法直接识别。

所以,希望找一款替代产品。目前开源的文件存储系统比较多,比较了多个,我们的要求是要支持 S3 存储,最终选定了 minio。

从对比中,目前文件存储在 ceph 和 minio 中进行比较选型

https://p9.toutiaoimg.com/origin/pgc-image/88f9f7ed343c41a594d7918e3f130993?from=pc

优点

成熟

红帽继子,ceph 创始人已经加入红帽

国内有所谓的 ceph 中国社区,私人机构,不活跃,文档有滞后,而且没有更新的迹象。

从 git 上提交者来看,中国有几家公司的程序员在提交代码,星辰天合,easystack, 腾讯、阿里基于 ceph 在做云存储,但是在开源社区中不活跃,阿里一位叫 liupan 的有参与

功能强大

支持数千节点

支持动态增加节点,自动平衡数据分布。(TODO,需要多长时间,add node 时是否可以不间断运行)

可配置性强,可针对不同场景进行调优

缺点

学习成本高,安装运维复杂。(或者说这个不是 ceph 的缺点,是我水平不行)

优点

学习成本低,安装运维简单,开箱即用

目前 minio 论坛推广给力,有问必答

有 java 客户端、js 客户端

缺点

社区不够成熟,业界参考资料较少

不支持动态增加节点,minio 创始人的设计理念就是动态增加节点太复杂,后续会采用其它方案来支持扩容。

其缺点是目前不支持动态在线扩容。我们业务的使用量不会很大,所以这个问题先不考虑。

1,下载

去官网下载安装包。不大,40M 左右。

2,运行

后台运行

nohup ./minio server /home/haieradmin/minio/data > /home/haieradmin/minio/minio.log 2>&1 &

自定义 MINIO_ACCESS_KEY 和 MINIO_SECRET_KEY

export MINIO_ACCESS_KEY=minio

export MINIO_SECRET_KEY=miniostorage

#自定义端口号

./minio server –address 101.121.115.159:9001 /home/haieradmin/minio/data

启动成功之后,就可以登录控制台了

https://p9.toutiaoimg.com/origin/pgc-image/878cc12be9e84c889d36922d7ffbba4e?from=pc

https://p9.toutiaoimg.com/origin/pgc-image/b3272a8cb12f433c99cdd58222876395?from=pc

https://p9.toutiaoimg.com/origin/pgc-image/ad5fc9df43c140dd888fe4c197773db4?from=pc

点击右下角的小加号,先创建一个 bucket,再上传一个文件

完美啊,真是太简单了

去服务器上看,实际上也是新建了一个目录,新建了一个文件。

这点比使用 mongo 的 girdFS 好太多了。

一个简单例子:

新建一个 springboot 项目,引入依赖

io.minio

minio

3.0.6

https://p9.toutiaoimg.com/origin/pgc-image/5381a662184b402395c0fc36c9684c8c?from=pc

注意,一定要是 3.0.6 的版本。官网给的 3.0.10 版本,和示例代码匹配不上。

代码还是很简单,创建一个 client。创建 bucket,然后上传文件即可。

https://p9.toutiaoimg.com/origin/pgc-image/1091b193a71b475f914cdcd048fa721c?from=pc

去控制台查看下,文件已经传上来了

整体感受下来,体验非常好。更深入的问题需要继续研究。比如容灾能力,集群化部署。