对象存储
1、对象存储产生的背景
对象存储是面向企业级应用和互联网服务推出的非结构化数据存储服务,提供安全、可 靠、稳定的海量数据存储解决方案。随着大数据、云计算和移动互联网等的发展,很多以前存在技术瓶颈的业务,都可以在对象存储这里得到完美的解决, 比如现在很流行的微信应用,上面每天不 计其数的图片, 后面承载它的正是对象存储
2、对象存储的概念
对象存储和我们经常接触到的硬盘和文件系统等存储形态不同,它提供Key-Value(简称K/V)方式的RESTful数据读写接口,并且常以网络服务的形式提供数据的访问,对象在一个层结构中不会再有层级结构。每个对象都在一个被称作存储池的扁平地址空间的同一级别里,一个对象不会属于另一个对象的下一级
对象存储就像我们的储物间,分了一间房子给主人,房间就是我们对象存储里面的bucket,主人需要放东西的时候将东西给我,但是主人并不关心东西被放在房间的什么地方,当主人需要取东西的时候只要给我钥匙和东西的名字就能将所需要的东西给他。
目前,对象存储已经得到了广泛的应用。具有代表性的大规模实现主要在各个公有云服务商,比如AWS的S3、Rackspace的CloudFiles,国内的七牛云存储、阿里云的开放存储服务OSS也属于对象存储,青云也发布了对象存储服务
3、对象存储和传统的文件系统比较
对于大多数文件系统来说,尤其是POSIX兼容的文件系统,提供open、close、read、write和lseek等接口。
而对象存储的接口是REST风格的,通常是基于HTTP协议的RESTful Web API,通过HTTP请求中的POST、PUT、GET和DELETE操作进行文件的上传即写入和下载即读取,通过DELETE操作删除文件。
(图片内容来自SwiftStack)
对象存储和文件系统在接口上的本质区别是对象存储不支持fread和fwrite类似的随机位置读写操作,即一个文件PUT到对象存储里以后,如果要读取,只能GET整个文件,如果要修改一个对象,只能重新PUT一个新的到对象存储里,覆盖之前的对象或者形成一个新的版本。
如果结合平时使用云盘的经验,就不难理解这个特点了,用户会上传文件到云盘或者从云盘下载文件。如果要修改一个文件,会把文件下载下来,修改以后重新上传,替换之前的版本。实际上几乎所有的互联网应用,都是用这种存储方式读写数据的,比如微信,在朋友圈里发照片是上传图像、收取别人发的照片是下载图像,也可以从朋友圈中删除以前发送的内容;微博也是如此,通过微博API我们可以了解到,微博客户端的每一张图片都是通过REST风格的HTTP请求从服务端获取的,而我们要发微博的话,也是通过HTTP请求将数据包括图片传上去的。在没有对象存储以前,开发者需要自己为客户端提供HTTP的数据读写接口,并通过程序代码转换为对文件系统的读写操作。
4、对象存储使用的场景
内容存储和分享:用户可以将整个存储基础设施转移到云端,按需使用和付费。
用于数据分析:存储可以用于分析商业或科学数据,可以用于调整的图片,用于转码的视频等。
灾备系统:由于对象存储具备成本效益,可用于关键数据的定期备份和异常恢复。
网盘应用:对象存储可提供丰富的数据类型支持,由于存储容量可弹性扩展,适合用来做网盘 服务。