ceph RGW接口源碼解析--Rados數據操做

RGW業務處理流程:apache

http reqest --> apache 轉 FastCgi module數據結構

FastCgi module --> radosgw  經過socket請求實現(未肯定是否有其它方式)socket

radosgw --> ceph集羣  經過socket實現,調用rados接口ui


一、數據結構this

在Rgw_common.h定義了基本的數據結構,並實現了 decode、encode序列化,方便對rados訪問
code

//桶的權限建立資料
接口

struct RGWBucketInfo 
{
  rgw_bucket bucket;
  string owner;
  uint32_t flags;
  string region;
  time_t creation_time;
  string placement_rule;
  bool has_instance_obj;
  RGWObjVersionTracker objv_tracker; /* we don't need to serialize this, for runtime tracking */
  obj_version ep_objv; /* entry point object version, for runtime tracking only */
  RGWQuotaInfo quota;string

io

//桶pool位置存儲組成
struct rgw_bucket {
  std::string name;
  std::string data_pool;
  std::string data_extra_pool; /* if not set, then we should use data_pool instead */
  std::string index_pool;
  std::string marker;
  std::string bucket_id;
  std::string oid;
 }ast

//用戶UID資料

struct RGWUserInfo

二、s3元數據原子操做

在rgw_op.h定義元數據的原子操做,RGWOp做爲基類

建立桶的原子類定義:class RGWCreateBucket : public RGWOp

三、元數據操做句柄

在Rgw_bucket.h中定義
    class RGWUserBuckets

在Rgw_bucket.cc中實現
  class RGWBucketInstanceMetadataHandler : public RGWMetadataHandler
  class RGWBucketMetadataHandler : public RGWMetadataHandler

四、rados接口實現

在rgw_rados.h 定義了RGWRados,實現了全部與rados相關的操做接口

相關文章
相關標籤/搜索