对象存储基本上已经成为互联网行业非结构化数据存储的底座。
元数据/数据布局
Ceph RGW 将数据组织分为3种类型:Metadata,bucket index 和 data
Metadata
包含user,bucket,bucket.instance,OTP 等信息。
# radosgw-admin metadata list
bucket index
对象的索引。
data
对象的数据,每个RGW对象(rgw-object)都会保存在一个或者多个RADOS对象(system-object)里,通常以下列3种形式进行组织:
RADOS对象Data
RADOS对象扩展属性 xattr
RADOS 对象OMAP
RGW 架构
Ceph 本身采用分层架构,RADOS 层中的OSD进程负责切片后对对象数据和元数据的持久化存储,作为RADOS层客户端存在的RGW进程负责处理对象存储的业务逻辑。其逻辑有明显的分层架构设计思路,涉及的层有以下几个:
- 负责解析和验证HTTP(s) 请求的协议解析曾
- 负责对解析后的对象存储业务请求进行处理的业务逻辑层
- 负责对对象存储数据和元数据进行持久化存取的数据持久化层
协议解析层
协议解析层本质上就是HTTP服务器的实现,RGW提供了灵活的插件式HTTP服务器实现,具备以下特性:
- 最早实现的兼容FCGI协议的 FCGI HTTP 服务器前端
- 基于C++ HTTP服务端库 civerweb 实现的服务器前端
- 基于C++ boost HTTP 标准库 beast 实现的服务器前端
业务逻辑层
数据持久化层
IO 路径
RGW 请求处理经历了3个阶段:
![](https://img.haomeiwen.com/i7304940/7440380f8851b0fe.png)
对于上述流程处理,RGW 中有3个重要的数据结构:
- RGWFrontend
- RGWRESTMgr
- RGWHandler
网友评论