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

    文章

    4711

    浏览量

    89634
  • NAS
    NAS
    +关注

    关注

    11

    文章

    317

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    三种类型内存的使用

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

    MEMS中的三种测温方式

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

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

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

    信号隔离器三种供电方式的区别

    信号隔离器是一重要的信号隔离装置,其供电方式主要有独立供电、回路供电和输出回路供电三种。以下是这三种供电方式的详细区别: 一、独立供电 1. 定义:独立供电是指信号隔离器需要单独配备DC24V或
    的头像 发表于 04-17 16:23 1126次阅读
    信号隔离器<b class='flag-5'>三种</b>供电方式的区别

    双极型极管放大电路的三种基本组态的学习课件免费下载

      本文档的主要内容详细介绍的是双极型极管放大电路的三种基本组态的学习课件免费下载包括了:共集电极放大电路,共基极放大电路,三种基本组态的比较   输入信号ui 和输出信号uo 的公共端是集电极。
    发表于 04-11 16:39 27次下载

    redis三种集群方案详解

    在Redis中提供的集群方案总共有三种(一般一个redis节点不超过10G内存)。
    的头像 发表于 03-31 10:46 1306次阅读
    redis<b class='flag-5'>三种</b>集群方案详解

    CMOS,Bipolar,FET这三种工艺的优缺点是什么?

    在我用photodiode工具选型I/V放大电路的时候,系统给我推荐了AD8655用于I/V,此芯片为CMOS工艺 但是查阅资料很多都是用FET工艺的芯片,所以请教下用于光电信号放大转换(主要考虑信噪比和带宽)一般我们用哪种工艺的芯片, CMOS,Bipolar,FET这三种工艺的优缺点是什么?
    发表于 03-25 06:23

    GaN、超级SI、SiC这三种MOS器件的用途区别

    如果想要说明白GaN、超级SI、SiC这三种MOS器件的用途区别,首先要做的是搞清楚这三种功率器件的特性,然后再根据材料特性分析具体应用。
    的头像 发表于 03-14 18:05 2253次阅读

    分布式存储有哪几种类型?

    分布式存储有哪几种类型?分布式存储系统是一将数据分散存储在多台独立节点上的技术,根据数据模型可分为键值
    的头像 发表于 02-20 11:00 1149次阅读

    深入解析三种锂电池封装形状背后的技术路线与工艺奥秘

    在新能源时代,锂电池作为核心动力与储能单元,其重要性不言而喻。而在锂电池的诸多特性中,封装形状这一外在表现形式,实则蕴含着复杂的技术考量与工艺逻辑。方形、圆柱、软包三种主流封装形状,各自对应着独特
    的头像 发表于 02-17 10:10 2088次阅读
    深入解析<b class='flag-5'>三种</b>锂电池封装形状背后的技术路线与工艺奥秘

    控制系统的三种信号_控制系统的个指标

    在控制系统中,信号是传递信息的重要媒介,根据信号的特点和应用场景,可以将其主要分为以下三种类型:   一、模拟信号(Analog Signal)   模拟信号是在时间和幅值上均连续取值
    的头像 发表于 01-27 11:43 2066次阅读

    光伏系统的三种类型及其应用分析

    光伏(PV)系统可以根据设置和应用来设计,以满足各种能源需求。第一种类型仅在日光下运行,将阳光直接转化为电能,不储存以备后用,适合于偏远地区的水泵和通风系统。另一配置使用直流电(DC)和电池存储
    的头像 发表于 01-20 11:40 2014次阅读
    光伏系统的<b class='flag-5'>三种类型</b>及其应用分析

    示波器的三种触发模式

    示波器的触发方式不仅影响波形捕捉的时机,还决定了显示的波形是否稳定。 常见的触发模式有三种: 单次触发 (Single)、 正常触发 (Normal)和 自动触发 (Auto)。下面将对这三种触发
    的头像 发表于 01-07 11:04 1.3w次阅读
    示波器的<b class='flag-5'>三种</b>触发模式