当前位置: 首页 > 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流程

在这里插入图片描述

数据冗余与即使修复

对象存储的数据冗余策略

在这里插入图片描述

断点续传

数据压缩

数据维护

相关文章:

分布式对象存储

参考《分布式对象存储----原理、架构以及Go语言实现》(作者:胡世杰) 对象存储简介 数据的管理方式 以对象的方式管理数据,一个对象包括:对象的数据、对象的元数据、对象的全局唯一标识符 访问数据的方式 可扩展的分…...

跨境独立站代购中国电商平台商品PHP多语言多货币

跨境独立站代购中国电商平台商品是指代购者在海外建立自己的独立电商平台,代理中国主流电商平台(如淘宝、京东等)的商品进行销售和代购。这种模式的优势在于代购者可以自主选择产品和价格策略,同时还能提供更专业和优质的服务。 …...

Python接口自动化 —— Json 数据处理实战(详解)

简介 上一篇说了关于json数据处理,是为了断言方便,这篇就带各位小伙伴实战一下。首先捋一下思路,然后根据思路一步一步的去实现和实战,不要一开始就盲目的动手和无头苍蝇一样到处乱撞,撞得头破血流后而放弃了。不仅什么…...

微信页面公众号页面 安全键盘收起后页面空白

微信浏览器打开H5页面和公众号页面,输入密码时调起安全键盘,键盘收起后 键盘下方页面留白 解决办法: 1、(简单)只有在调起安全键盘(输入密码)的时候会出现这种情况,将input属性改为n…...

数据结构 - 二叉树

递归实现前中后序遍历 #include<stdio.h> #include<stdlib.h>#define TElemType inttypedef struct BiTNode{TElemType data;struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; BiTNode root;void visit(TElemType& e){printf("%d",e); }void Pre…...

【Overload游戏引擎细节分析】从视图投影矩阵提取视锥体及overload对视锥体的封装

overoad代码中包含一段有意思的代码&#xff0c;可以从视图投影矩阵逆推出摄像机的视锥体&#xff0c;本文来分析一下原理 一、平面的方程 视锥体是用平面来表示的&#xff0c;所以先看看平面的数学表达。 平面方程可以由其法线N&#xff08;A, B, C&#xff09;和一个点Q(x0,…...

Linux 安全 - LSM hook点

文章目录 一、LSM file system hooks1.1 LSM super_block hooks1.2 LSM file hooks1.3 LSM inode hooks 二、LSM Task hooks三、LSM IPC hooks四、LSM Network hooks五、LSM Module & System hooks 一、LSM file system hooks 在VFS&#xff08;虚拟文件系统&#xff09;层…...

【iOS逆向与安全】越狱检测与过检测附ida伪代码

首先在网上查找一些检测代码 放入项目运行&#xff0c;用 ida 打开后 F5 得到下面的 __int64 __usercall sub_10001B3F0<X0>(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8, __int64 a9, __int64 a10, __int64 a11…...

Android Studio gradle手动下载配置

项目同步时&#xff0c;有时候会遇到Android Studio第一步下载gradle就是连接失败的问题。 这种情况&#xff0c;我们可以手动去gradle官网下载好gradle文件&#xff0c;放置在Android Studio的缓存目录下&#xff0c;这样AS在同步代码时就会自动解压下载好的文件。 步骤如下&…...

ChatGPT Prompting开发实战(十三)

一&#xff0e; 如何评估prompts是否包含有害内容 用户在与ChatGPT交互时提供的prompts可能会包括有害内容&#xff0c;这时可以通过调用OpenAI提供的API来进行判断&#xff0c;接下来给出示例&#xff0c;通过调用模型“gpt-3.5-turbo”来演示这个过程。 prompt示例如下&…...

银河麒麟 ARM 架构 离线安装Docker

1. 下载对应的安装包 进入此地址下载对应的docker 离线安装包 下载地址 将文件上传到服务器 解压此文件 tar zxf docker-18.09.1.tgz将 docker 相关命令拷贝到 /usr/bin&#xff0c;方便直接运行命令 cp docker/* /usr/bin/启动Docker守护程序 dockerd &验证是否安装成…...

虹科科技 | 探索CAN通信世界:PCAN-Explorer 6软件的功能与应用

CAN&#xff08;Controller Area Network&#xff09;总线是一种广泛应用于汽车和工业领域的通信协议&#xff0c;用于实时数据传输和设备之间的通信。而虹科的PCAN-Explorer 6软件是一款功能强大的CAN总线分析工具&#xff0c;为开发人员提供了丰富的功能和灵活性。本文将重点…...

SELECT COUNT(*)会不会导致全表扫描引起慢查询

SELECT COUNT(*)会不会导致全表扫描引起慢查询呢&#xff1f; SELECT COUNT(*) FROM SomeTable 网上有一种说法&#xff0c;针对无 where_clause 的 COUNT(*)&#xff0c;MySQL 是有优化的&#xff0c;优化器会选择成本最小的辅助索引查询计数&#xff0c;其实反而性能最高&…...

英国物联网初创公司【FourJaw】完成180万英镑融资

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于英国谢菲尔德的物联网初创公司【FourJaw】今日宣布已完成180万英镑融资。 本轮融资完成后&#xff0c;FourJaw的总融资金额已达400万英镑&#xff0c;本轮融资的投资机构包括&#xff1a;…...

许战海战略文库|无增长则衰亡:中小型制造企业增长困境

竞争环境不是匀速变化&#xff0c;而是加速变化。企业的衰退与进化、兴衰更迭在不断发生&#xff0c;这成为一种不可避免的现实。事实上&#xff0c;在产业链竞争中增长困境不分企业大小&#xff0c;而是一种普遍存在的问题&#xff0c;许多收入在1亿至10亿美元间的制造企业也同…...

广州华锐互动:候车室智能数字孪生系统实现交通信息可视化

随着科技的不断发展&#xff0c;数字化技术在各个领域得到了广泛的应用。智慧车站作为一种新型的交通服务模式&#xff0c;通过运用先进的数字化技术&#xff0c;为乘客提供了更加便捷、舒适的出行体验。 将智慧车站与数字孪生大屏结合&#xff0c;可以将实际现实世界的实体车站…...

智慧工地:助力数字建造、智慧建造、安全建造、绿色建造

智慧工地管理系统融合计算机技术、物联网、视频处理、大数据、云计算等&#xff0c;为工程项目管理提供先进的技术手段&#xff0c;构建施工现场智能监控系统&#xff0c;有效弥补传统监理中的缺陷&#xff0c;对人、机、料、法、环境的管理由原来的被动监督变成全方位的主动管…...

增强基于Cortex-M3的MCU以处理480 Mbps高速USB

通用串行总线&#xff08;USB&#xff09;完全取代了PC上的UART&#xff0c;PS2和IEEE-1284并行接口&#xff0c;现在已在嵌入式开发应用程序中得到广泛认可。嵌入式开发系统使用的大多数I / O设备&#xff08;键盘&#xff0c;扫描仪&#xff0c;鼠标&#xff09;都是基于USB的…...

山海鲸汽车需求调研系统:智慧决策的关键一步

随着社会的发展和科技的进步&#xff0c;汽车行业也迎来了新的挑战和机遇。如何更好地满足用户需求、提高产品竞争力成为了汽车制造商们关注的焦点。在这个背景下&#xff0c;山海鲸汽车需求调研互动系统应运而生&#xff0c;为汽车行业赋予了智慧决策的力量。 智慧决策的核心&…...

视频缩放的概念整理-步长数组

最近在读ffmpeg的代码时候&#xff0c;这个接口不是很能看懂int sws_scale(struct SwsContext *c, const uint8_t *const srcSlice[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[]); 多方请教后&#xff0c;记录结果如…...

如何在Windows上快速挂载ISO镜像?WinCDEmu虚拟光驱终极指南

如何在Windows上快速挂载ISO镜像&#xff1f;WinCDEmu虚拟光驱终极指南 【免费下载链接】WinCDEmu 项目地址: https://gitcode.com/gh_mirrors/wi/WinCDEmu 还在为ISO、IMG等光盘镜像文件无法直接使用而烦恼吗&#xff1f;还在为没有物理光驱而无法读取光盘内容而困扰吗…...

Faster-Whisper 实战:从本地部署到WebSocket实时语音转写服务

1. Faster-Whisper本地环境搭建 第一次接触Faster-Whisper时&#xff0c;我被它的速度惊艳到了。相比原版Whisper&#xff0c;这个优化版本在保持相同准确率的情况下&#xff0c;推理速度提升了4倍以上。这对于需要实时语音转写的场景来说简直是福音。下面我会手把手带你完成环…...

IPXWrapper终极指南:让90年代经典游戏在现代Windows上重生联机对战

IPXWrapper终极指南&#xff1a;让90年代经典游戏在现代Windows上重生联机对战 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 对于许多怀旧游戏玩家来说&#xff0c;最大的遗憾莫过于那些经典的《星际争霸》、《帝国时代》、《…...

MaterialSkin终极指南:10分钟让WinForms应用焕然一新

MaterialSkin终极指南&#xff1a;10分钟让WinForms应用焕然一新 【免费下载链接】MaterialSkin Theming .NET WinForms, C# or VB.Net, to Googles Material Design Principles. 项目地址: https://gitcode.com/gh_mirrors/mat/MaterialSkin 你是否厌倦了传统WinForms应…...

如何打破课堂限制?JiYuTrainer让您的电脑重获自由

如何打破课堂限制&#xff1f;JiYuTrainer让您的电脑重获自由 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 当您在计算机课堂上被极域电子教室完全控制时&#xff0c;是否感到学…...

Qt QSettings管理Windows环境变量:原理、实现与实战优化

1. 项目概述最近在做一个Qt开发的桌面工具&#xff0c;里面有个功能点需要动态修改用户的系统环境变量&#xff0c;比如把一些我们自己打包的工具路径加到用户的PATH里&#xff0c;这样用户在其他地方打开命令行也能直接调用。一开始想着用系统API或者直接写注册表&#xff0c;…...

跨境物流监控进入“秒级预警”时代:实测实在Agent风险预警能力深度测评详解

摘要&#xff1a; 步入2026年&#xff0c;全球贸易数字化转型已从“信息化”跨越至“智能体化”阶段。跨境物流监控作为支撑全球供应链的核心枢纽&#xff0c;正面临红海危机常态化、信创国产化替代加速以及数据安全监管趋严的多重挑战。传统的人工监控与初级RPA方案在应对多变…...

麒麟KylinOS 2303系统管理员必备:用模板为新用户批量配置统一电源策略

麒麟KylinOS 2303系统管理员实战&#xff1a;批量配置用户电源策略的模板化方案 在企业办公环境或学校机房中&#xff0c;麒麟KylinOS系统管理员经常面临统一管理多台电脑电源策略的需求。传统逐台配置的方式效率低下&#xff0c;而通过/etc/skel/用户模板目录的机制&#xff0…...

3.1 FiRa UCI规范解析——命令、响应与通知的交互逻辑

1. FiRa UCI规范的核心交互机制 第一次接触FiRa UCI规范时&#xff0c;我被它严谨的消息交互设计所震撼。这个看似简单的命令-响应机制&#xff0c;实际上蕴含着UWB通信的精妙控制逻辑。就像交通信号灯指挥车辆通行一样&#xff0c;UCI规范通过明确的指令流向和状态反馈&#…...

电子制造工厂场景,AI自动化方案主流厂商横评:2026年智慧工厂选型深度解析

站在2026年的时间节点回看&#xff0c;电子制造工厂的数字化转型已完成从“单点自动化”向“系统智能化”的跨越。 随着全球供应链波动的常态化&#xff0c;AI自动化方案已不再是锦上添花的“实验室项目”&#xff0c; 而是关乎企业在0.1毫米精度竞争中能否生存的底层基座。 根…...