RGW处理请求中获取handler过程

原创 2015年11月17日 20:32:25

RGW 创建处理请求的handler

在src/rgw/rgw_main.cc源文件中的process_request()函数中有一个很重要的操作,就是Handler的获取,handler是manager中注册用来处理请求,很重要的一个对象:
获取Handler

RGWHandler *handler = rest->get_handler(store, s, client_io, &mgr, &init_error);

Method:

RGWHandler *RGWREST::get_handler(RGWRados *store, struct req_state *s, RGWClientIO *cio,
                 RGWRESTMgr **pmgr, int *init_error)
{
  RGWHandler *handler;
//对请求做预处理,主要是格式化一下请求信息
  *init_error = preprocess(s, cio);
  if (*init_error < 0)
    return NULL;
//根据请求的endpoint来选择相应的manager,默认是s3的manager
  RGWRESTMgr *m = mgr.get_resource_mgr(s, s->decoded_uri, &s->relative_uri);
  if (!m) {
    *init_error = -ERR_METHOD_NOT_ALLOWED;
    return NULL;
  }

  if (pmgr)
    *pmgr = m;
//从得到的manager中选择handler,主要是从请求的url中得到handler选择的依据。
  handler = m->get_handler(s);
  if (!handler) {
    *init_error = -ERR_METHOD_NOT_ALLOWED;
    return NULL;
  }
  //检验bucket、object名字是否规范,和获取其他一些请求参数。
  *init_error = handler->init(store, s, cio);
  if (*init_error < 0) {
    m->put_handler(handler);
    return NULL;
  }

  return handler;
}

RGW Create bucket

RGW Create bucket client 提交一个的请求后,daemon会实例化一个handler来处理该请求,如创建一个bucket。 daemon会实例一个RGWHandler_Obj...
  • litianze99
  • litianze99
  • 2016年02月14日 19:14
  • 667

radosgw layout (rgw 布局)

要了解一个存储系统,首先要了解其数据、元数据布局、重要抽象。这里对radosgw / rgw 的布局进行简单介绍。...
  • ganggexiongqi
  • ganggexiongqi
  • 2016年05月19日 11:53
  • 1553

rgw librados io

//初始化user quota 和bucket quota op->init_processing() //验证用户是否有对应的操作, op->verify_op_mask(); //对应AC...
  • litianze99
  • litianze99
  • 2016年05月24日 13:29
  • 566

三种Ceph rgw前端的配置方式

rgw 概述Ceph 通过radosgw提供RESTFul HTTP API接口支持对象存储能力,radosgw构建在librados之上,兼容Amazon S3以及Opensack Swift。ra...
  • lzw06061139
  • lzw06061139
  • 2016年05月18日 16:47
  • 6116

CEPH RGW 使用

创建一个S3风格用法的用户 ceph-admin-node@ceph-admin-node:~$ sudo radosgw-admin user create id=”harvis_rgw_user...
  • jiankangshiye
  • jiankangshiye
  • 2017年04月17日 18:58
  • 782

【分析】Ceph:RGW基本原理

Ceph提供了三种存储类型:块存储、文件存储和对象存储,本文主要介绍对象存储的RGW基本原理和应用场景。1 什么是分布式存储对象存储(云存储)是面向对象/文件的、海量的互联网存储。对象存储里的对象是经...
  • iamonlyme
  • iamonlyme
  • 2017年06月18日 10:27
  • 1362

rgw librados io

rgw librados io
  • zrs19800702
  • zrs19800702
  • 2016年11月17日 22:51
  • 213

CEPH RGW处理请求过程

Rgw处理请求过程Rest api: Put /{bucket} HTTP/1.1 x-amz-acl: public-read-write Authorization: AWS {access}...
  • litianze99
  • litianze99
  • 2015年11月17日 20:29
  • 2083

rgw中的数据模型

ceph集群中的pools $ rados lspools.rgw .rgw.root .rgw.control .rgw.gc .rgw.buckets .rgw.buckets.index .l...
  • litianze99
  • litianze99
  • 2016年04月16日 16:50
  • 892

Ceph RGW Federated Architecture

1 . Overview In Ceph version 0.67 Dumpling and beyond, you may configure each Ceph Object Gateway ...
  • chweiweich
  • chweiweich
  • 2016年11月20日 21:30
  • 169
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RGW处理请求中获取handler过程
举报原因:
原因补充:

(最多只允许输入30个字)