系统架构
对象存储OSS是构建在阿里云飞天平台上的一种存储解决方案。其基础是飞天平台的分布式文件系统、分布式任务调度等基础设施。这些基础设施提供了OSS以及其他阿里云服务所需的分布式调度、高速网络、分布式存储等重要特性。
OSS的架构如下图所示。
OSS的架构分为三层:协议接入层、分区层、持久存储层。
协议接入层
WS:WebServer 网页服务器,使用的是开源的tengine组件,对外提供HTTP和HTTPS服务。
PM:ProtcolModule 协议模块将HTTP请求转换为后端KV或者其他模块的操作。并负责接收用户使用RESTful协议发来的请求,进行安全认证。如果认证通过,用户的请求将被转发到Key-Value引擎继续处理;如果认证失败,直接返回错误信息给用户。
分区层
分区层,负责数据结构化处理,即按照Key来查找或存储数据,并支持大规模并发的请求。当协调服务集群变更导致服务被迫改变运行物理位置时,可以快速协调找到接入点。同时负责对象文件索引管理、对象文件转换成底层持久数据文件。
分布式协调服务,主要负责命名服务可看做nameservice及分布式锁服务。
KV分为KVMaster和KVServer。KVMaster主要负责管理和调度分区,KVServer负责分区的索引及数据存储。
持久层
持久存储层,即大规模分布式文件系统。元数据存储在Master上,Master之间采用分布式消息一致性协议(Paxos)保证元数据的一致性。从而实现高效的文件分布式存储和访问,保证数据在系统中有3个备份以及在软硬件错误发生以后的故障恢复。
数据流转流程
本文介绍用户从访问OSS到获取相应数据的流转流程。
OSS数据流程: ⽤⼾ → RESTful API → 负载均衡-Web服务器→ 协议模块 →KV Engine→ 分布式存储 ,详情如下:
1. 用户使用不同的客户端,例如浏览器或者SDK,发出符合对象存储 API规范的请求,到对象存储的Endpoint,对象存储的Endpoint会被解析到负载均衡的LVS VIP上,VIP的后端绑定着真实的WebServer(WS)。请求最终会落到其中的某一台WS上。
2. 请求到到对象存储的Web服务器后,协议模块(PM)会将用户请求进行解析。 首先会进行权限验证,权限验证不通过会直接返回用户相应的错误码。
3. 如果Object读写的请求被协议模块验证通过后,会被解析成对KV Engine的读写操作,进入分区层。
4. 分区层负责数据结构化处理,即按照Key来查找或存储数据,并支持大规模并发的请求。 当协调服务集群变更导致服务被迫改变运行物理位置时,可以快速协调找到接入点。
5. 分区层的KV Engine存入的数据最终会被写入到持久存储层。
6. 持久存储层,即大规模分布式文件系统。元数据存储在Master上,Master之间采用 分布式消息一致性协议(Paxos)保证元数据的一致性。从而实现高效的文件分布式存储和访问,保证数据在系统中有3个备份以及在软硬件错误发生以后的故障恢复。
|