0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

三种存储类型的类比与依赖

汽车玩家 来源:新钛云服 作者:黄平安 2020-05-05 22:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. 三种存储类型

随着PC、平板电脑智能手机等电子设备的普及,互联网极大的提升了人们的生活水平。网络在丰富人们生活的同时,也产生了庞大的数据量。

图1 各种电子设备

IDC预测,全球数据总量预计2020年达到44个ZB,我国数据量将达到8060个EB,占全球数据总量的18%。44个ZB是什么规模呢?相当于44万亿GB。

数据量的迅速增加促进了存储行业的发展,硬件方面和软件方面都有了长足的进步。

本文主要对对象存储进行一个简单的说明,希望通过本文,您能对对象存储有个大致的了解。

主流存储类型分为三种:块存储、文件存储以及对象存储

块存储主要是将裸磁盘空间整个映射给主机,按照物理卷或逻辑卷的方式存储数据。特点:速度快、保存的数据尺寸大、数据变化频率高,缺点:可扩展程度小、容量小。(其实我们日常生活中见到的硬盘,就是块存储)

文件存储,典型代表NAS。NAS是类似一个共享文件夹,用户可以通过相应的传输协议,把数据放在上面。容量相对较大,但是速度较慢。

下面说到对象存储了,不知道大家有没有思考过一个问题。每天微信朋友圈或者微博,以及最近爆火的那些小视频app,用户上传了海量的图片或者视频,它们都是存放在什么地方的呢?我个人认为,对象存储,是存储它们的一个不错选择。

对象存储,对象指的是面向对象,集合了块存储和文件存储的优点,拥有速度快、容量大等特性。并且容易搭配云计算,是一种新的网络存储架构。

当然,三种存储类型并不是完全独立的,还是有依赖关系的。对象存储在底层存储介质方面上,还是部分依赖块存储和文件存储的。

 三种存储类型的类比与依赖

图2 三种存储类型依赖关系

为了更好的说明三者的差异,我打个比方,假设有三个人想从A地到B地,现在有三种交通方式。甲选择轿车、乙选择公共汽车、丙选择地铁。块存储类似于轿车,速度快,但是容量小(轿车只能乘坐几个人);文件存储类似于公共汽车,速度慢(公共汽车有站点和红绿灯需要考虑),但是容量较大(能多坐不少人);对象存储类似于地铁,速度快,容量大。

图3 三种存储类型类比

2.对象存储原理

2.1 对象数据组成结构

与块存储和文件存储管理数据的方式不同,对象存储是以对象的形式管理数据的。对象和文件最大的不同,就是在文件基础之上增加了元数据。一般情况下,对象分为三个部分:数据、元数据以及对象id。

对象的数据通常是无结构的数据,比如:图片、视频或文档等;对象的元数据则指的是对象的相关描述,比如:图片的大小、文档的拥有者等;对象id则是一个全局的唯一标识符,用来区分对象的。

2.2 对象访问方式

对象存储,访问对象的方式很方便,是通过REST接口对对象进行操作,用HTTP动词(GET、POST、PUT、DELETE等)描述操作。除此之外,还有一种访问方式,就是使用各大云商提供的客户端去操作对象。比如:Amazon的s3cmd、阿里云的osscmd/ossutil、腾讯云的coscmd等。这些客户端都是各个云商开发出来,可以以命令行的形式在操作系统中操作对象的工具,各大云商都有详细的文档说明,在这就不一一赘述了。

2.3 对象存储优缺点

先说优点,之前大概也提了下:

可扩展性高:对象存储能够扩展数十乃至数百EB的容量,能够充分利用高密度存储;

效率高:扁平化结构,不受复杂目录系统对性能的影响;

无需迁移:对象存储是一种横向扩展系统,随着容量的增加,数据根据算法自动分布于所有的对象存储节点;

安全性高:对象存储通常凭借HTTP调用对象存储本身提供的认证密钥来提供数据访问;

访问方便:不光支持HTTP(S)协议,采用REST的API方式调用和检索数据,同样增加了NFS和SMB支持;

成本相对低:与块存储方式相比,对象存储是最具成本效益的数据存储类型,并且与云计算搭配,把对象存储的这一特性发挥的淋漓尽致。

再提缺点:

最终一致性:由于不同节点的位置不同,数据同步时可能会有一定时间的延迟或者错误;

不易做数据库:对象存储比较适合存储那些变动不大甚至不变的文件,而对于像数据库这种需要直接与存储裸盘相互映射的应用,还是块存储更合适。

3. 对象存储应用

前面说了许多定义,可能许多朋友还是云里雾里的,不知道对象存储怎么使用。下面,我以腾讯云的对象存储(cos)为例,使用python的代码方式来实际应用一下。

cos有一个存储桶(bucket,其他云商也有)的概念,它是对象的载体,可理解为存放对象的“容器”。用户可以通过腾讯云控制器、API、SDK等多种方式管理以及配置存储桶。下图是功能的整个流程图,具体含义后面会介绍:

三种存储类型的类比与依赖

图4 上传图片和查看图片流程图

3.1 创建bucket

我就不用代码的方式创建存储桶了,直接在腾讯控制台创建一个bucket,命名为“tyun-cn-test”。bucket有三种类型私有读写、公有读私有写、公有读写,凡是带“私有”二字的,是需要请求签名的。为了测试完整,我选择私有读写的方式,来做一个上传图片的功能。

创建完bucket之后,就可以写代码了,我使用cos提供的API进行图片上传。因为我选择的bucket是私有读写的,所以上传图片之前,还需要先生成一个请求签名。

3.2 生成cos的请求签名

三种存储类型的类比与依赖

图5 生成密钥的python代码

cos的请求签名的文档写的挺详细,不过它是以PHP的方式举例的,我把它重新用python封装了一个函数,有几个参数需要注意。

函数中,sign_time为签名的有效时间,http_method为操作方式(上传文件时用PUT,获取文件时用GET),remote_file_name为上传到cos的文件名,api_url为bucket的访问地址,secret_id和secret_key都是腾讯云API密钥。

3.3 上传图片到cos

上传图片到cos的整个流程:先通过POST方式暂时把图片上传到后端服务器,然后调用cos的API,使用PUT的方式把图片上传到cos,之后返回一个图片的cos地址,最后删除后端服务器上的图片。

三种存储类型的类比与依赖

图6 服务器上image上传到cos代码

上图,就是把图片从服务器上传到cos的大致实现,其中fname是图片在服务器上的地址,_get_cos_sign()函数就是前面生成请求签名的函数。

需要注意的是,上传图片(PUT)和获取图片(GET)的方式不同,所以生成请求签名的时传递的http_method也需要区分。访问返回的图片地址,就会发现图片已经上传成功到cos上了。

4.总结

对象存储,作为一个新的存储类型,在云计算高速发展的今天,有着很大的用武之地。不过,尽管有着扩展性好、效率高等优点,其一致性仍是不好处理的问题。所以,不能把鸡蛋放在同一个篮子里。合理选择存储类型,对用户和企业来说,都是一个需要考虑的问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4889

    浏览量

    90282
  • NAS
    NAS
    +关注

    关注

    11

    文章

    325

    浏览量

    115159
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    UPS的三种主要类型与输出波形解析:你的设备需要哪种“保护伞”

    ,性能表现也天壤之别?为何有些设备接入UPS后反而工作不稳定?答案,就隐藏在UPS的三种主要技术类型及其核心的输出波形差异之中。理解这两点,是您为关键设备选择正确
    的头像 发表于 04-14 13:13 89次阅读
    UPS的<b class='flag-5'>三种</b>主要<b class='flag-5'>类型</b>与输出波形解析:你的设备需要哪种“保护伞”

    ATE系统中这三种测量卡的架构和功能

    测试仪行业面临的一个挑战是,如何在不显著增加测试仪时间、尺寸或成本的情况下,满足对大量测试通道的需求。尽管半导体测试仪(也称为自动测试器件(ATE))种类繁多,但在大多数测试仪都包含三种主要卡:电压
    的头像 发表于 04-09 15:12 148次阅读
    ATE系统中这<b class='flag-5'>三种</b>测量卡的架构和功能

    【MCP】同时支持stdio,streamableHttpless和sse三种协议的MCP服务框架

    项目说明 这是一个同时支持stdio,streamableHttpless和sse三种协议的MCP-Server的框架(ts语言)。 为什么我想做这个框架呢?因为随着AI发展,现在越来越多业务需要
    的头像 发表于 01-21 18:26 399次阅读
    【MCP】同时支持stdio,streamableHttpless和sse<b class='flag-5'>三种</b>协议的MCP服务框架

    嵌入式中的浮点型数据转换为字节类型三种方法

    什么是浮点数 浮点数是指一既包含小数又包含整数的数据类型。 浮点型变量分类 浮点型分为单精度(float型)和双精度(double型)。浮点型变量使用定义。如下: float a; // 声明
    发表于 01-07 06:28

    C语言中实现函数宏的三种方式

    在宏的第一个分号后便结束。即 a = b 和 b = tmp 均不受控制语句所作用。 因此,在工程中,一般使用三种方式来对函数宏进行封装,分别为 {}、do{...}while(0
    发表于 12-29 07:34

    请问CW32芯片的三种工作模式是什么?

    CW32芯片的三种工作模式是什么?
    发表于 12-26 06:48

    三种类型内存的使用

    的,因为底层数据会被默默删除。自动存储通常被称为“栈”。 分配的存储:运行malloc() 会返回的内存类型,这种内存会一直保留,直到被 free() 函数释放,所以可以被传递到任何地方,包括返回
    发表于 12-12 06:43

    TC377配置SMU FSP时,如何配置频率参数;三种模式有何区别,配置上有何区别?

    TC377配置SMU FSP时,如何配置频率参数;三种模式有何区别,配置上有何区别?
    发表于 08-08 07:48

    三种SPWM波形生成算法的分析与实现

    摘要:变频技术作为现代电力电子的核心技术,集现代电子、信息和智能技术于一体。而SPW(正弦波脉宽调制)波的产生和控制则是变频技术的核心之一。本文对SPI波形生成的三种算法-对称规则采样法、不对称规则
    发表于 07-31 13:34

    CAN总线电容过大?三种解决方案来了

    在新能源汽车路试中,CAN总线传输异常是一个常见问题。本期我们将探讨由于总线电容过大导致的下降沿过缓问题,并介绍三种有效的解决方案。CAN总线下降沿过缓问题新能源路试工程师在分析CAN总线波形
    的头像 发表于 07-22 11:36 857次阅读
    CAN总线电容过大?<b class='flag-5'>三种</b>解决方案来了

    MEMS中的三种测温方式

    在集成MEMS芯片的环境温度测量领域,热阻、热电堆和PN结原理是三种主流技术。热阻是利用热敏电阻,如金属铂或注入硅的温度电阻系数恒定,即电阻随温度线性变化的特性测温,电阻变化直接对应绝对温度,需恒流源供电。
    的头像 发表于 07-16 13:58 1894次阅读
    MEMS中的<b class='flag-5'>三种</b>测温方式

    开关电源三种控制模式:PWM/PFM/PSM

    摘要 本文详细介绍了开关电源的三种主要调制方式:PWM(脉冲宽度调制)、PFM(脉冲频率调制)和PSM(脉冲跨周期调制)。PWM通过调整脉冲宽度保持恒定频率,适用于重负载,但轻负载效率低。PFM则在
    发表于 06-09 16:11

    HarmonyOS基础组件:Button三种类型的使用

    中的Button相较于Android原生来说,功能比较丰富,扩展性高,减少了开发者的代码数量,简化了使用方式。不仅可以自定义圆角还支持三种样式。 常用属性 名称 参数类型 描述 type
    的头像 发表于 06-09 15:48 2709次阅读
    HarmonyOS基础组件:Button<b class='flag-5'>三种类型</b>的使用

    介绍三种常见的MySQL高可用方案

    在生产环境中,为了确保数据库系统的连续可用性、降低故障恢复时间以及实现业务的无缝切换,高可用(High Availability, HA)方案至关重要。本文将详细介绍三种常见的 MySQL 高可用
    的头像 发表于 05-28 17:16 1437次阅读

    黄红蓝电缆三种线分别是什么线

    在电气线路中,黄、红、蓝三种颜色的电缆通常分别代表不同的线路类型,具体如下: 黄色电缆 代表线路:在相交流电系统中,黄色电缆一般代表A相线(也称为L1相线)。 作用:作为相电源中的
    的头像 发表于 05-15 10:39 2.2w次阅读