RadosGW框架分析
RadosGW分析。 一、RadosGW的main()函数解析。 RadosGW的main()函数位于rgw_main.cc中,该函数是RadosGW的入口函数。这里主要解析和RadosGW相关的内容,尽量省略WebServer的内容。 main()函数解析如下: 1、根据g_conf->rgw_frontends得到默认支持的前端WebServers,目前默认支持的前端WebServer包括fastcgi和civetweb。对于每一个支持的前端都有一个RGWFrontendConfig类与之对应,最后将WebServer的名字和对应的RGWFrontendConfig类设置到fe_map集合中; 2、调用global_init()函数做初始化操作; 3、调用rgw_tool_init()函数从g_conf->rgw_mime_type_file指定的文件中读取该文件中的数据并初始化; 4、调用curl_global_init()函数初始化libcurl,由此可以看出rgw使用curl进行网络数据传输; 5、调用FCGX_Init()初始化WebServer; 6、调用RGWStoreManager::get_storage()函数初始化librados对象,即:以后对Ceph集群的操作都得通过该librados对象; 7、调用rgw_rest_init()初始化rest部分; 8