小編給大家分享一下RGW S3 GC類有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)專注于旅順口網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供旅順口營銷型網(wǎng)站建設(shè),旅順口網(wǎng)站制作、旅順口網(wǎng)頁設(shè)計(jì)、旅順口網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造旅順口網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供旅順口網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
RGW S3 GC類的主要功能是提供垃圾收集器的功能。用于異步刪除對象。
一、RGW S3 GC核心類關(guān)系圖
二、RGW S3 GC核心數(shù)據(jù)類關(guān)系圖
三、RGW S3 GC主要處理函數(shù)解析。
1、RGWGC初始化操作。
RGWGC::initialize()
|__設(shè)置cct和store類對象
|__從配置文件中得到gc最大對象個(gè)數(shù),即:rgw_gc_max_objs
|__根據(jù)gc最大對象個(gè)數(shù)生成obj_names數(shù)組且初始化該數(shù)組的內(nèi)容為gc.0-rgw_gc_max_objs
2、RGWGC終止操作。
RGWGC::finalize()
|__刪除obj_names數(shù)組
3、添加chain。
RGWGC::add_chain()
|__cls_rgw_gc_set_entry()
|__rgw_cls_gc_set_entry()
|__gc_update_entry()
|__gc_omap_get()
|__cls_cxx_map_get_val() 以名字為key,得到Ceph集群中已經(jīng)保存的cls_rgw_gc_obj_info信息(CEPH_OSD_OP_OMAPGETVALSBYKEYS)
|__get_time_key() 得到time key
|__gc_omap_remove()
|__cls_cxx_map_remove_key() 刪除指定time key的值(CEPH_OSD_OMAPRMKEYS)
|__gc_omap_set()
|__cls_cxx_map_set_val() 以名字為key,設(shè)置cls_rgw_gc_obj_info信息到Ceph集群(CEPH_OSD_OP_OMAPSETVALS)
|__get_time_key() 得到time key
|__gc_omap_set() 以time為key,設(shè)置cls_rgw_gc_obj_info信息到Ceph集群(CEPH_OSD_OP_OMAPSETVALS)
4、發(fā)送chain。
RGWGC::send_chain()
|__RGWGC::add_chain()
|__RGWGC::tag_index()
|__RGWRados::gc_operate()
5、更新chain。
RGWGC::defer_chain()
|__cls_rgw_gc_defer_entry()
|__rgw_cls_gc_defer_entry()
|__gc_defer_entry()
|__gc_omap_get() 以名字為key,得到cls_rgw_gc_obj_info信息
|__gc_update_entry() 以cls_rgw_gc_obj_info和更新的expiration_secs為參數(shù),更新Ceph集群中的以名字和time為key的cls_rgw_gc_obj_info信息
|__RGWGC::tag_index()
|__RGWRados::gc_operate()
6、刪除chain。
RGWGC::remove()
|__cls_rgw_gc_remove()
|__rgw_cls_gc_remove()
|__gc_remove()
|__gc_omap_get() 以名字為key,得到cls_rgw_gc_obj_info信息
|__get_time_key() 得到time key
|__gc_omap_remove() 刪除以time為key的cls_rgw_gc_obj_info信息
|__gc_omap_remove() 刪除以名字為key的cls_rgw_gc_obj_info信息
|__RGWRados::gc_operate()
7、列出chain。
RGWGC::list()
|__cls_rgw_gc_list()
|__rgw_cls_gc_list()
|__gc_list_entries()
|__gc_iterate_entries()
|__prepend_index_prefix() 得到以time為key的key
|__cls_cxx_map_get_vals() 得到以time為key的所有cls_rgw_gc_obj_info信息
|__gc_record_decode() 解析得到cls_rgw_gc_obj_info信息
|__gc_list_cb() 將得到的cls_rgw_gc_obj_info信息插入到列表中
8、處理chain。
RGWGC::process()
|__cls_rgw_gc_list() 得到obj_names[i]對應(yīng)的所有cls_rgw_gc_obj_info信息
|__遍歷cls_rgw_gc_obj_info信息中所有的cls_rgw_obj,調(diào)用cls_refcount_put()
|__cls_rc_refcount_put()
|__read_refcount() 得到對象對應(yīng)的引用計(jì)數(shù)
|__obj_refcount::refs.erase() 減小對象的引用計(jì)數(shù)
|__對于引用計(jì)數(shù)為零,則調(diào)用cls_cxx_remove() 從Ceph集群中刪除對象(CEPH_OSD_OP_DELETE)
|__對于引用計(jì)數(shù)非零,則調(diào)用set_refcount() 更新對象的引用計(jì)數(shù)
9、RGWGC處理線程主函數(shù)。
RGWGC::GCWorker::entry()
|__RGWGC::process()
以上是“RGW S3 GC類有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞標(biāo)題:RGWS3GC類有什么用
網(wǎng)頁鏈接:http://aaarwkj.com/article0/gpghoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、面包屑導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、網(wǎng)站維護(hù)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)