ceph RGW类流程图

RGW源码框架

流程介绍

rgw支持两大类web引擎

  • fastcgi
  • civetweb
  • loadgen

rgw在main函数开始就会构建web引擎,具体代码如下

 if (framework == "fastcgi" || framework == "fcgi") {
      RGWProcessEnv fcgi_pe = { store, &rest, olog, 0 };

      fe = new RGWFCGXFrontend(fcgi_pe, config);
    } else if (framework == "civetweb" || framework == "mongoose") {
      RGWProcessEnv env = { store, &rest, olog, 0 };

      fe = new RGWMongooseFrontend(env, config);
    } else if (framework == "loadgen") {
      int port;
      config->get_val("port", 80, &port);

      RGWProcessEnv env = { store, &rest, olog, port };

      fe = new RGWLoadGenFrontend(env, config);
    } else {
      dout(0) << "WARNING: skipping unknown framework: " << framework << dendl;
      continue;
    }

由于默认使用civetweb类型,这里就大概分析一下civetweb工作, ciwetweb入口函数为run,也就是创建完引擎对象后直接执行fe->run();该函数启动后会开启一定量的线程,线程分为一个master线程用于监听链接和一堆worker线程负责干活,当请求过来以后由process_new_connection处理,处理完以后调用handle_request,该接口为civetweb引擎重点分析接口,负责分析http请求,并转化成rgw认识的数据结构,之后通过回调函数也就是civetweb_callback送向底层进行处理

static void process_new_connection(struct mg_connection *conn)

   if (ebuf[0] == '\0') {
            handle_request(conn);
            if (conn->ctx->callbacks.end_request != NULL) {
                conn->ctx->callbacks.end_request(conn, conn->status_code);
            }
            log_access(conn);
        }

如下代码段是分析结束后往底层送数据的接口process_request,该接口通过RGWRados* store, RGWREST* rest获取RGWRESTMgr对象(该对象维护了RGW处理资源),最后由该对象获取handler,handler知道该操作使用哪个RGWOp对象,然后直接调用其execute接口进行流程处理

 

 

框架图

 

https://www.processon.com/view/link/5bee83cae4b0993bf72ef9e3

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Ceph RGW(Rados Gateway)是Ceph存储系统中提供对象存储服务的组件。它允许用户通过HTTP协议以对象的形式存储和检索数据。 Ceph RGW是一个分布式的、高可用的存储解决方案,它将数据分散保存在多个物理节点上,提供了可靠的数据冗余和容错能力。通过数据的分散,RGW能够实现高并发的访问和高吞吐量的数据传输,从而满足大规模的存储需求。 在Ceph RGW中,数据以对象的形式存储,每个对象都有一个唯一的标识符和元数据信息,可以通过它们进行快速的检索和访问。对象可以以任意格式存储,如文本、图片、视频等。通过提供RESTful风格的API,RGW使得开发者能够方便地访问和操作存储在其中的对象。 RGW支持多租户的机制,可以为不同的用户或应用程序提供独立的存储空间和访问权限。它还提供了访问控制机制,可以通过身份验证、访问策略等方式,限制对象的访问权限,并保证数据的安全性。 另外,Ceph RGW还具有自动化的数据迁移和负载均衡功能,可以根据数据的访问模式和负载情况,自动调整数据的存储位置和副本数量,以实现最佳的性能和可用性。 综上所述,Ceph RGW是一款功能强大、可靠性高的对象存储服务,适用于大规模存储和分发数据的场景。它提供了高并发、高吞吐量的数据访问和传输能力,以及安全性、可扩展性等方面的优势,成为当今对象存储领域的一种重要解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值