当前位置: 首页 > news >正文

ceph-rgw zipper的设计理念(1)

 0.前言

RGW在ceph存储中的主要作用是提供S3和Swift的协议访问支持。Zipper工作主要是将RGW分为协议部分和后端部分。协议部分还是支持S3和Swift协议,包括身份认证、协议参数解析和op操作解析等等;后端部分主要是对接不同的存储,比如rados(zipper中变换为RadosStore,主要通过RADOS访问ceph集群)、DBstore(可以用 SQL,特别是本地 SQLite 数据库来存储数据)、DAOS(intel的存储平台)等。Zipper 还允许中间过滤器层转换操作、执行策略(如将不同对象导向不同存储)或执行数据和元数据缓存。

1.Ceph Zipper Project Overview

   provide the feature-rich S3 protocal capabilities of ceph RGW for an array of non-ceph storage backends

    • ISV storage sources(CORTX,DAOS,etc),Cloud Services(FSx Lustre)
    • DB/File driver for compact deployments(Edge,Development)

Provide flexible, composable integration APl/framework based on stackable filter drivers

    • Cache integration (In Progress)
    • lO redirection
    • Tiering/transitions across backends (RADOS, S3, CORTX)

2.Zipper project vision

  • Bring the power and features of RGW's S3 implementation to other storage backends
  • Enable RGW to be the S3 object storage interface across heterogenous storage backends
  • Mix and customize functionality cleanly via stacked “filter" drivers (e.g.. caching)

  一图胜千言

3.Zipper Architecture

 此处主要是数据结构和处理结构的变化,由于rgw中可以选择是否使用RADOS进行存储数据,所以此处的bucket、user、object一同进行变换。

  • 个人以为之前的代码写的太乱,尤其是rgw_rados的代码,堆积了几万行。

4.Zipper File Layout

common文件:

  • rgw_sal.h,rgw sal.cc:都是一些纯虚函数的定义,包括driver、user、bucket、object等
  • rgw_sal_store.h,rgw_sal_filter.h,rgw_sal_filter.cc:定义了一些基础的store和filter。

具体实现文件:

  •  rgw_sal_<impl>.h rgw_sal_<impl>.cc:具体类的实现。比如bucket、object等。
  • store/<impl>:store和filter的具体实现

 参考:Ceph.io — Ceph Virtual 2022

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ARCGIS 纸质小班XY坐标转电子要素面(2)
  • validationtools中按键测试选项光标移除
  • Spring Boot集成Stripe快速入门demo
  • 使用dx工具将jar和class打包成dex
  • 注解的生命周期
  • 粘包、半包和Netty中的自定义帧解码器间的关系
  • 【Java设计模式】脏标记模式:通过变更跟踪优化性能
  • HTTP/3
  • 453.最小操作次数使数组元素相等
  • 产品概述Tektronix泰克TCP0030A电流探头TCP0030原装二手
  • 自然语言处理与深度学习的结合
  • pyinstaller 打包发布flask 应用
  • C++奇迹之旅:深度解析list的模拟实现
  • 【时时三省】(C语言基础)指针进阶6qsort函数的使用
  • BCC软译码和硬译码之间的性能差别
  • 收藏网友的 源程序下载网
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • canvas绘制圆角头像
  • create-react-app项目添加less配置
  • Date型的使用
  • git 常用命令
  • javascript从右向左截取指定位数字符的3种方法
  • Linux快速复制或删除大量小文件
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • spring boot下thymeleaf全局静态变量配置
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • vue 个人积累(使用工具,组件)
  • zookeeper系列(七)实战分布式命名服务
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 二维平面内的碰撞检测【一】
  • 每天10道Java面试题,跟我走,offer有!
  • 前端攻城师
  • 前端面试总结(at, md)
  • 新版博客前端前瞻
  • raise 与 raise ... from 的区别
  • 说说我为什么看好Spring Cloud Alibaba
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (9)STL算法之逆转旋转
  • (笔记)M1使用hombrew安装qemu
  • (二)Linux——Linux常用指令
  • (黑客游戏)HackTheGame1.21 过关攻略
  • .net打印*三角形
  • .Net各种迷惑命名解释
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET序列化 serializable,反序列化
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • /etc/fstab和/etc/mtab的区别
  • @angular/cli项目构建--Dynamic.Form
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • []Telit UC864E 拨号上网
  • [20190416]完善shared latch测试脚本2.txt
  • [android] 切换界面的通用处理
  • [C++]:for循环for(int num : nums)