本文由 简悦 SimpRead 转码, 原文地址 www.toutiao.com
之前一直使用 MongoDB 的 GirdFS 存储文件,在并发处理能力和扩容能力上没有遇到问题。但是使用总是不够变量,各种功能都需要自己开发。
之前一直使用 MongoDB 的 GirdFS 存储文件,在并发处理能力和扩容能力上没有遇到问题。但是使用总是不够变量,各种功能都需要自己开发。存储上是 wt 文件,无法直接识别。
所以,希望找一款替代产品。目前开源的文件存储系统比较多,比较了多个,我们的要求是要支持 S3 存储,最终选定了 minio。
从对比中,目前文件存储在 ceph 和 minio 中进行比较选型
优点
成熟
红帽继子,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
启动成功之后,就可以登录控制台了
点击右下角的小加号,先创建一个 bucket,再上传一个文件
完美啊,真是太简单了
去服务器上看,实际上也是新建了一个目录,新建了一个文件。
这点比使用 mongo 的 girdFS 好太多了。
一个简单例子:
新建一个 springboot 项目,引入依赖
注意,一定要是 3.0.6 的版本。官网给的 3.0.10 版本,和示例代码匹配不上。
代码还是很简单,创建一个 client。创建 bucket,然后上传文件即可。
去控制台查看下,文件已经传上来了
整体感受下来,体验非常好。更深入的问题需要继续研究。比如容灾能力,集群化部署。