一、什么是 OSS
OSS的英文全称是Object Storage Service ,对象存储服务,是一种使用 HTTP API 存储和检索非结构化数据和元数据对象的工具。
可以理解成是一个资源托管的地方,这些资源,就是上面提到的对象。网站或者系统运营的过程中,可能会存储大量的图片、视频、音频这样的静态资源。如果是在服务器本机存储这些内容,维护成本高,不利于迁移,而且容灾效果不佳。为了解决这些问题,可以将这些静态资源托管到第三方服务中 ,而这个资源托管的服务就是对象存储服务。
如果只有存储功能,那么OSS服务就跟硬盘没啥区别了,OSS还要有外部访问的能力,这样才能把静态资源传上去(上行流量),别人才可以把这些静态资源下载下来(下行流量)。
总结来讲,OSS就是集存储与访问于一身的资源对象托管服务,用于存储静态资源,同时还提供备份、容灾等常见功能。
注意点:
- 对象,指的是非结构化的静态资源,如图片、音频、视频、日志文件等。
- OSS提供的服务有存储、访问、备份、容灾等。
- OSS一般指第三方云厂商提供的对象存储服务,当然也可以自己在本地机房搭建自己的对象存储,如使用Minio等搭建分布式文件存储服务,用作对象存储。
二、OSS中的相关术语
1.存储空间(Buket)
存储空间是用于存储对象的容器,所有的对象都存储在某个存储空间中。
2.对象/文件(Object)
对象是OSS存储数据的基本单元,也被称为OSS的文件,对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的key来标识。
3.地域(Region)
地域表示OSS的数据中心所在的物理位置,可以根据费用、请求来源等来选择数据存储的地域。
4.访问域名(Endpoint)
Endpoint表示对外提供服务的访问域名,OSS以 HTTP restful API 对外提供服务,当访问不同地域的时候,需要不同的域名。通过内网和外网访问同一个地域所需要的域名是不同的。
5.访问密钥(AccessKey)
简称AK,指的是访问身份验证中用到的AccessKeyId和AccessKeySecret。OSS通过使用AccessKeyId和AccessKeySecret对称加密的方法来验证某个请求发送者的身份。AccessKeyId用来标识用户,AccessKeySecret用于加密签名字符串和OSS用来验证签名字符串的密钥,AccessKeySecret必须保密。
三、OSS特点、优势
- 无需自己购买、维护存储设备,无需自己构建分布式的、异地的、可容灾的存储服务。
- OSS使用简单,提供RESTful API,操作简单;而且,一般提供简单易用的文档操作界面。
- 动静态数据分离。将静态的资源存储于OSS中,动态的数据存储在本地或者云服务器上,分别加载,提升整体性能,而且从另外一方便来讲,可以腾出更多的本地服务器资源用于计算。
- 提供CDN服务。有些OSS厂商提供CDN服务,将静态资源存储到异地,提高系统页面的加载速度。
- 支持跨地域同步、异地容灾。
- 资源弹性伸缩,拓展更方便。自己搭建存储设备,拓展存储空间会很麻烦,甚至需要部分服务停机,而OSS可以按需购买空间和流量,弹性拓展,对用户无感知。而且不用产提前准备大量的闲置空间,减少资金投入和资源浪费。
四、OSS的缺点与注意点
对象存储不允许部分修改对象内容。
如果需要修改数据内容,需要先在文件系统中还原对象,然后对对象进行修改,然后重新上传对象,效率很低。
所以,OSS不适合存储经常改变的数据,更适合存储静态的资源,如图片、音频、视频、日志、备份文件、镜像文件等。
注意:
- 对象存储不允许部分修改内容,包含追加写入。如果需要追加,也需要下载,修改,上传的过程。这一点与HDFS不同,HDFS也不允许部分修改,但是可以追加写入。
- OSS不能用作数据库文件的存储,因为OSS不适合存储经常改变的数据,否则效率极低。
五、OSS实现原理
OSS是一种服务思想,实现方式多种多样。可以通过HDFS、HBase等实现,可以通过minio等实现。主要是在一种或者多种分布式文件系统的基础上,实现OSS基础功能,及其他保障性功能。
六、常见OSS服务
阿里云、七牛云等云服务厂商。
七、OSS的本地化方案
如果不考虑OSS的大多数保障性功能,只想实现对象存储的核心功能,存储静态的文件数据,可以考虑选择一种分布式文件系统,来实现本地化的对象存储。
这里推荐使用MinIO。
与其他分布式文件系统相比,MinIO有以下几个特点:
- 安装部署、维护简单。
- 轻量级。
- API简单易用。
- 支持中小型文件存储,单对象文件从几KB到最大5T。
- 提供简洁的操作界面。
此外,也可以考虑FastDFS,轻量、社区活跃,相对MinIO,部署有点麻烦。