对象存储概念及特性
在介绍 QingStor®️对象存储内部的的架构和设计原理之前,我们首先来了解一下对象存储的概念,也就是从外部视角看,对象存储有什么特性,我们应该如何使用。
对象存储本质上是一款存储产品,与其他的存储,如文件存储、块存储,功能是类似的,主要的功能都是数据的读和写。最大的不同在于对象存储是把数据作为对象进行管理,这是它最主要的特征,所有的数据在这里面都当做一个对象处理。
对象存储有一些非常鲜明的特点:
- 它的结构是扁平的,不像文件存储那样有目录层级,在读写数据时不需要对目录进行层层查找和打开。
- 对象存储具备海量数据存储的能力,这里的海量指的是不仅仅是几百 GB 的量,而是说几百 T 甚至上 PB 的级别。
- 对象存储适用于非结构化数据的存储,非结构化具体指的是不对数据的类型和格式做任何假设,不管是简单的文本,还是图片、视频、音频都可以存在对象存储里,当做对象来处理。
- 对象存储通过 Restful 接口对外提供服务,也就是 HTTP 协议,这使得对象存储的访问非常方便,随时随地可以进行数据的上传和下载。
QingStor®️对象存储核心优势
![0_1591683403636_1.png](https://community.qingcloud.com/assets/uploads/files/1591683404995-1-resized.png
上面讲的几点是对象存储产品所具备的通用特征,接下来介绍一下青云QingCloud 自研的存储产品 QingStor®️对象存储独有的核心优势,主要包括三方面:
第一,对海量小文件这个场景,我们在存储及 IO 上都做了针对性的优化优化。
第二,QingStor®️对象存储的系统具有无限扩展的能力,当数据量、访问量增加时,可以通过增加节点的方式提升计算和存储能力。
第三,QingStor®️对象存储是数据存储与流转的平台,从两方面来体现:
首先,所有功能的 API 都是开放的,可以通过任意调用 API 来完成业务逻辑。
其次,提供一些非常有特色的功能,像生命周期管理、跨区域复制以及自定义回调等,可以适配更多的业务场景。
QingStor®️对象存储全局数据模型
上图是 QingStor®️对象存储的全局数据模型,可以理解成一个逻辑上的视图。
这包括几个主要概念:Global 是全局的意思,Global 由多个 Zone 组成,Zone 是区域的意思,可以把它理解成数据中心,例如在北京区域部署了一套对象存储,同时在上海数据中心也部署了一套,这两套对象存储属于同一个 Global。
QingStor®️对象存储在 Zone 级别和 Global 级别都有相应的管理服务。
Zone 由很多个 Bucket(存储桶)组成,在使用对象存储时,必须要先申请一个存储桶,然后才能向存储桶中上传对象数据,以存储桶为单位来存储和管理对象数据。
在同一个 Zone 下面可以有很多个存储桶,存储桶里有各种各样的对象数据,对象数据对类型大小没有限制,单个存储桶中对象的数量也没有限制,可以无限量上传对象数据。
QingStor®️对象存储架构解析
这是 QingStor®️对象存储的后台系统架构,这个架构图经过了一些简化和抽象。
首先是接入子系统,对象存储提供的是在线服务,通过 Restful 进行访问,本质上相当于在线服务的后台,需要有接入子系统来完成接收请求、解析协议等工作。
在接入子系统下是索引子系统,索引子系统用来存储和管理对象的元数据,元数据指的是对象的 Meta 信息,包括 Object 类型、大小、写入时间之类的信息,由索引子系统管理。
存储子系统负责存储和管理数据实体本身,保证数据的可靠持久化存储。
事件子系统主要工作是异步事件处理和分布式任务调度,它是生命周期管理等功能的底层机制。
图中几条实线箭头显示了数据的流向或者说是请求处理流程,请求从接入子系统下来,接入子系统会和索引子系