构建自己的对象存储

对象存储是一种计算机数据存储架构,它是把数据作为对象来管理,恰好与文件系统的存储相反,在文件系统中,数据的管理是通过扇区与磁道对数据进行管理,而且还有文件大小与目录数量的限制(每个分区的innode是有限的),当文件不断增加时读取速度也会变慢。在对象存储的架构中,每个对象通常会包含数据自己本身,文件的元数据(metadata),以及全局唯一的标识符,提供api提供给应用直接使用,并且可以很简单实现分布式数据存储

别说自己找不到对象,这时后宫三千都不止

构建自己的对象存储服务

  • 使用Nginx+MongoDB+GridFS构建存储方案

  • Minio 是一个开源的对象存储服务并兼容Amazon S3 API

Nginx+MongoDB+GridFS

这种构建方式适合在已有的Mongodb的基础设施构建,它使用的MongoDB C语言驱动提供GridFS的API写入MongoDB的GridFS文件系统中,在读取时GridFS的API返回steam给Nginx处理并加上Header响应到客户端

整体工作流程

Minio

Minio 是一个基于C/S架构的对象存储服务器,兼容Amazon S3云存储,适合存储图片,视频,日志文件,存储文件的大小最大为5TB

整体工作流程

minio对云存储有着良好的支持,如果需要整合到云存储除了使用已有的Amazon S3兼容库,也可以使用Go语言扩展到其它第三方云存储的支持,在写入文件方面mino提供多语言sdk,可以快速整合应用中,默认提供Docker的支持,在Docker的基础可以快速构建一个分布式存储系统,在安全方面minio实现一套访问控制策略的机制,可以设置文件是否可被访问或者下载,提供基于浏览器端文件管理方式

总结

Nginx+MongoDB+GridFS构建的对象存储解决方案可以基于现有的基础设施构建,减少部署的时间,很快就可以构建一个分布式存储方案,但是难以扩展到云存储,配置与构建相对与minio稍为复杂,虽解决了核心问题,但对与在此基础上衍生的出问题比如访问权限的控制等还需要进行深入的研究。Minio专为对象存储构建的服务器,提供完整的对象存储解决方案,配置相对简单,使用Docker可以很容易实现一个分布式存储,且提供管理工具

你的欣赏是我最大的动力

Yanxiong Huang

My name is Yanxiong Huang. graduated from Nanyang middle school.Love Linux,familiar with Node.js,Docker,Serverless... and more Web technology.Contact Me:QQ 31356617;Email:huangaynxiong2013@gmail.com

guangzhou,china http://www.myfreax.com

乐在分享