RGW概要分析

RGW简介

Ceph对象存储又名RGW,提供REST风格的API接口,兼容S3swiftRGW简单来说就是一个语义转换层,以s3接口来说,就是将s3语义的数据读写转换成rados集群中对象的读写。比方说上传文件,RGW主要做的事情就是将文件对象拆分成多个rados集群对象保存下来(当然不止这么简单),下载文件再将多个rados集群对象读取上来返回给用户。所以用户看到的一个文件映射到rados集群中可能是1N的关系。

RGW设计

对外来说用户通过发送http请求到apacheapachefastcgi moduleradosgw内部的fastcgi接收端,然后radosgw通过librados将数据存储在rados集群中。业务流向图如下:

 

RGW内部主要分为3大部分:

1、  rgw-http:解析接收到的restful请求,包括S3SWIFTADMIN Ops

2、  librgw:将协议语义转换为对象存储的语义,最终将元数据或数据存储在rados集群中去。这里面细分的话又有文件数据,桶元数据,用户信息数据,计量数据,配额信息数据,日志等

3、  后台:rgw有多个后台处理或刷数据线程。包括gc(垃圾数据回收),usage(计量数据),renewlog(远程复制data日志)等。

RGW主流程线程模型

Rgw的主要线程模型使用的是ceph通用的线程池管理,主线程用于接收fastcgi接收到的请求,然后将请求丢队列,具体的请求都是由threadPoolworker线程来处理

猜你喜欢

转载自my.oschina.net/u/2257799/blog/472546