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

分布式对象存储

参考《分布式对象存储----原理、架构以及Go语言实现》(作者:胡世杰)

对象存储简介

数据的管理方式

以对象的方式管理数据,一个对象包括:对象的数据、对象的元数据、对象的全局唯一标识符

访问数据的方式

在这里插入图片描述

可扩展的分布式系统

接口和数据存储分离的架构

在这里插入图片描述

  1. 接口实现对象的存取

  2. 接口通过 RabbitMQ 消息队列进行通讯

    1. 向某个 exchange 进行一对多的消息群发

      1. apiServices exchange 每一台接口服务节点都会接收到任意一台数据服务节点的心跳

      2. dataServices exchange 所有数据服务节点绑定该 exchange 并接收来着接口服务的定位消息,拥有对象的数据服务节点会使用消息单发通知该接口服务节点

        当发送一条信息给 dataServices exchange 时,定位成功后,将会创建一个反馈信息的临时队列,临时队列将在一定时间后关闭

    2. 向某个消息队列进行一对一的消息单发

REST接口

  • GET 提供一个 locate接口 在这里插入图片描述

    客户端通过GET方法发送对象定位请求,接口服务节点收到请求后会向数据服务层群发一个定位信息,然后等待反馈。如果存在则返回该数据服务节点的地址

RabbitMQ 消息设计

数据服务心跳信息

在这里插入图片描述

接口服务的定位信息及反馈

在这里插入图片描述

对象PUT流程

在这里插入图片描述

在这里插入图片描述

对象GET流程

在这里插入图片描述

元数据服务

散列值与散列函数

在这里插入图片描述

在这里插入图片描述

计算散列值的算法推荐

书上的例子为 SHA-256 更高级别的有SHA-512

加入元数据服务的框架

书中建议是使用ElasticSearch

我们项目选择的是MySQL对元数据进行存储

REST接口

  • GET新增一个参数version

在这里插入图片描述

表示对象数据的版本默认状态下是最新版本

  • PUT需提供一个名为 Digest 的 HTTP 请求头,和一个名为 Content-Length 请求头

在这里插入图片描述

  • DELETE只需要删除元数据而数据节点继续保存数据,知道所有元数据都被删除

在这里插入图片描述

  • 查询指定对象的所有版本

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

ES接口(MySQL)

对象PUT流程

在这里插入图片描述

对象GET流程

在这里插入图片描述

数据校验与去重

需要数据校验的原因

在这里插入图片描述

给数据加入缓存功能

在数据服务层再加入一个缓存服务

数据服务的REST接口

  • 以POST方法访问数据服务temp接口在URL中指定数据对象的散列值,并提供一个名为size的HTTP请求头,用于指定对象的大小。这会在数据服务中创建一个临时对象,该接口返回一个随机生成的uuid用于标记临时对象

在这里插入图片描述

  • 将对象内容发到数据服务temp接口,并写入临时对象

在这里插入图片描述

  • 根据对比散列值的结果进行操作

在这里插入图片描述

对象PUT流程

在这里插入图片描述

数据冗余与即使修复

对象存储的数据冗余策略

在这里插入图片描述

断点续传

数据压缩

数据维护

http://www.lryc.cn/news/191009.html

相关文章:

  • 跨境独立站代购中国电商平台商品PHP多语言多货币
  • Python接口自动化 —— Json 数据处理实战(详解)
  • 微信页面公众号页面 安全键盘收起后页面空白
  • 数据结构 - 二叉树
  • 【Overload游戏引擎细节分析】从视图投影矩阵提取视锥体及overload对视锥体的封装
  • Linux 安全 - LSM hook点
  • 【iOS逆向与安全】越狱检测与过检测附ida伪代码
  • Android Studio gradle手动下载配置
  • ChatGPT Prompting开发实战(十三)
  • 银河麒麟 ARM 架构 离线安装Docker
  • 虹科科技 | 探索CAN通信世界:PCAN-Explorer 6软件的功能与应用
  • SELECT COUNT(*)会不会导致全表扫描引起慢查询
  • 英国物联网初创公司【FourJaw】完成180万英镑融资
  • 许战海战略文库|无增长则衰亡:中小型制造企业增长困境
  • 广州华锐互动:候车室智能数字孪生系统实现交通信息可视化
  • 智慧工地:助力数字建造、智慧建造、安全建造、绿色建造
  • 增强基于Cortex-M3的MCU以处理480 Mbps高速USB
  • 山海鲸汽车需求调研系统:智慧决策的关键一步
  • 视频缩放的概念整理-步长数组
  • TensorFlow入门(二十一、softmax算法与损失函数)
  • UDP通信:快速入门
  • 修炼k8s+flink+hdfs+dlink(四:k8s(一)概念)
  • redis与 缓存击穿、缓存穿透、缓存雪崩
  • 印度网络安全:威胁与应对
  • AR动态贴纸SDK,让创作更加生动有趣
  • MySQL常用命令01
  • Java synchronized 关键字
  • 滑动窗口算法(C语言描述)
  • 【已修复】vcruntime140.dll有什么用,vcruntime140.dll缺失如何修复
  • 10月12日,每日信息差