千家信息网

RGW S3 User的示例分析

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章给大家分享的是有关RGW S3 User的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、RGW S3 User使用的类关系图。cls_user_head
千家信息网最后更新 2025年02月04日RGW S3 User的示例分析

这篇文章给大家分享的是有关RGW S3 User的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、RGW S3 User使用的类关系图。

cls_user_header和cls_user_bucket_entry从用户角度看到用户所拥有的buckets信息,这两个对象(其中cls_user_bucket_entry以数组的形式出现)需要保存在ceph集群中。通常在创建/删除/更新用户buckets时都需要这两个类对象。

RGwUserBuckets类是RGW User看到的buckets相关信息,实际上RGWBucketEnt和cls_user_bucket_entry类基本一致。

上图表示的是bucket的类关系图,其中rgw_bucket_dir_header和rgw_bucket_dir_entry这两个对象(rgw_bucket_dir_entry以数组的形式出现)保存到ceph集群中。在读写buckets时需要用到上述类。

上图描述了RGW User类的主要类及其关系图。其中核心类是RGWUser,该类表示一个RGW用户。上述类中RGWUID和RGWUserInfo类需要保存到Ceph集群。

二、RGW User主要函数处理流程。

1、同步指定用户所有buckets的使用信息

rgw_user_sync_all_stats()

|__rgw_read_user_buckets() 读取指定用户所有buckets信息并保存到RGWUserBuckets对象中

|__rgw_bucket_sync_user_stats() 同步指定用户所有buckets的使用信息。实际上是要更新cls_user_bucket_entry对象,更新结束后将cls_user_bukcet_entry对象写入到ceph集群

|__RGWRados::complete_sysnc_user_stats() 对于未同步完成的操作完成其操作,最后同步更新cls_user_header对象并将该对象写入到ceph集群

2、写指定用户信息到ceph集群

rgw_store_user_info()

|__检查RGWUserInfo中的access_key是否有效(通过access_key获取RGWUserInfo信息,之后比较获取到的RGWUserInfo信息与参数传进来的RGWUserInfo信息是否一致)

|__生成RGWUID对象且以RGWUserInfo.user_id进行初始化

|__以RGWUserInfo.user_id为key,将RGWUID和RGWUserInfo信息写入到user metadata pool中

|__以RGWUserInfo.user_email为key,将RGWUID信息写入到user email pool中

|__以RGWUserInfo::RGWAccessKey.id为key,将RGWUID信息写入到user keys pool中

3、通过用户index信息读取RGWUserInfo信息

rgw_get_user_info_from_index()

|__rgw_get_system_obj() 通过指定用户的index得到RGWUID对象

|__rgw_get_info_by_uid() 通过RGWUID.user_id信息得到RGWUserInfo信息

|__更新RGW User Info Cache uinfo_cache

4、通过用户uid信息读取RGWUserInfo信息

rgw_get_user_info_by_uid()

|__rgw_get_system_obj() 以uid为key,得到RGWUID对象和RGWUserInfo对象(使用的pool是user uid pool)

5、通过用户email信息读取RGWUserInfo信息

rgw_get_user_info_by_email()

|__rgw_get_user_info_from_index() 以用户的email为key,得到RGWUserInfo对象

6、通过用户accesskey信息读取RGWUserInfo信息

rgw_get_user_info_by_access_key()

|__rgw_get_user_info_from_index() 以用户的access key为key,得到RGWUserInfo对象

7、通过用户uid信息读取用户的属性信息

rgw_get_user_attrs_by_uid()

|__RGWRados::SystemObject::Read.stat()

|__RGWRados::stat_system_obj()

|__RGWRados::get_system_obj_state()

|__RGWRados::get_system_obj_state_impl()

|__RGWRados::raw_obj_stat() 读取指定对象的属性信息并且去掉以user.rgw.开头的属性值

8、删除用户access key索引

rgw_remove_key_index()

|__RGWRados::delete_system_obj()

9、删除用户uid索引

rgw_remove_uid_index()

|__rgw_get_user_info_by_uid()

|__RGWRados::meta_mgr::remove_entry() 删除user的metadata信息

10、删除用户email索引

rgw_remove_email_index()

|__RGWRados::delete_system_obj()

11、删除用户

rgw_delete_user()

|__rgw_read_user_buckets() 读取指定用户uid所拥有的bucket列表信息

|__rgw_remove_key_index() 删除以access key为索引的RGWUseInfo信息

|__RGWRados::delete_system_obj() 删除以email为索引的RGWUserInfo信息

|__RGWRados::delete_system_obj() 删除uid.bucket对象

|__RGWRados::meta_mgr.remove_entry() 删除用户的元数据信息

感谢各位的阅读!关于"RGW S3 User的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

信息 用户 对象 集群 索引 更新 同步 两个 属性 示例 分析 一致 上图 内容 实际 实际上 形式 数组 更多 篇文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 安卓软件开发遇到的问题 大学网络安全报告总结报告 专业网络安全准入控制系统报价 汕头聊天软件开发常见问题 网络安全演练成果汇报 文库 软件开发的部门经济科目 网络安全 以案释法 电力系统网络安全应急演练 软件开发流程问题及解决方法 网络安全绘画报简单 魔兽世界永久60服务器转服 软件开发是岗位吗 弹性物理服务器 血栓数据库 魔兽世界怎么看服务器的区域 汽车软件开发小视频 死亡搁浅啥时候有服务器 网络安全试卷四答案 企业招标系统是用什么软件开发 网信办网络安全调研 计算机网络技术专业专科学什么 装配式网络技术生产厂家 有没有网络安全类型的电影 软件开发服务商简介 中搜网络技术股份 对服务器的请求已被扩展程序阻止联想浏览器 显卡用于oracle数据库 流媒体服务器配置有要求吗 玻璃棉网络技术员工作内容 选择前十行数据库
0