共計 1309 個字符,預計需要花費 4 分鐘才能閱讀完成。
這篇文章主要為大家展示了“ceph RGW 接口源碼解析之 Rados 數據操作的示例代碼”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“ceph RGW 接口源碼解析之 Rados 數據操作的示例代碼”這篇文章吧。
RGW 業務處理流程:
http reqest — apache 轉 FastCgi module
FastCgi module — radosgw 通過 socket 請求實現 (未確定是否有其它方式)
radosgw — ceph 集群 通過 socket 實現,調用 rados 接口
1、數據結構
在 Rgw_common.h 定義了基本的數據結構,并實現了 decode、encode 序列化,方便對 rados 訪問
// 桶的權限創建資料
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;
}
// 桶 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;
}
// 用戶 UID 資料
struct RGWUserInfo
2、s3 元數據原子操作
在 rgw_op.h 定義元數據的原子操作,RGWOp 作為基類
創建桶的原子類定義:class RGWCreateBucket : public RGWOp
3、元數據操作句柄
在 Rgw_bucket.h 中定義
class RGWUserBuckets
在 Rgw_bucket.cc 中實現
class RGWBucketInstanceMetadataHandler : public RGWMetadataHandler
class RGWBucketMetadataHandler : public RGWMetadataHandler
4、rados 接口實現
在 rgw_rados.h 定義了 RGWRados,實現了所有與 rados 相關的操作接口
以上是“ceph RGW 接口源碼解析之 Rados 數據操作的示例代碼”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!