对象存储、HDFS、CDN之间的关系

先说结论:

对象存储是一个种存储数据的方式,HDFS是一种分布式存储文件的方式,对象存储和HDFS因为底层存储结构设计的不同使得两者的存储的应用场景不同,适合存储的数据类型也不同。如果需要RESTful HTTP接口、不需要目录结构、数据修改也不频繁,扁平数据管理结构的对象存储是比较好的选择。

CDN是一种加速数据库访问的分发策略。其中存储的静态资源完美契合了对象存储的应用场景,所以CDN底层数据多采用对象存储服务器来存储。CDN的典型应用案例是网页的动静态资源分离以及、图片视频的加速加载。

三种存储类型

块存储

典型设备: 磁盘阵列,硬盘

块存储将文件拆分为单个数据块,然后将这些块作为单独的数据片段来存储。每条数据都有不同的地址,因此无需将它们存储在文件结构中。主要是将裸磁盘空间映射给主机使用的。

优点:

  • 通过Raid与LVM等手段,对数据提供了保护。
  • 多块廉价的硬盘组合起来,提高容量。
  • 多块磁盘组合出来的逻辑盘,提升读写效率。

缺点:

  • 采用SAN架构组网时,光纤交换机,造价成本高。
  • 主机之间无法共享数据。

使用场景:

  • docker容器、虚拟机磁盘存储分配。
  • 日志存储。
  • 文件存储。

对象存储(Object Storage)

典型设备: 内置大容量硬盘的分布式服务器(swift, s3)

多台服务器内置大容量硬盘,安装上对象存储管理软件,对外提供读写访问功能。对象存储将获取的每个数据片段指定为对象。数据保存在单独的存储库中,而不是以文件的形式保存在文件夹中,数据与关联的元数据和唯一标识符捆绑在一起,以形成存储池。

对象存储服务(Object Storage Service)是一款稳定、安全、高效、易用的云存储服务,支持标准Restful API接口和扁平的数据组织形式。可存储任意数量和形式的非结构化数据。较为适合存储更新频率较低的数据。对象存储没有文件夹的概念,每个资源的获取都是通过唯一的key来索引获取的,而之所以我们有时获取到的对象存储url中感觉资源是存储在某个目录下,比如https://xxx/{bucket}/aa/bb/cc.jpg,感觉这个资源就是存在aa/bb文件夹下的cc.jpg文件,但是事实上是因为「aa/bb/cc.jpg」这个资源的key本身自带了'/'字符,而不是对象存储把各级目录用'/'字符分割开了。

根据业务方对数据访问频率的不同,可以细分为标准存储、低频访问、归档存储和深度归档存储。访问频率依次降低,云产商报的单价也越低。

对象存储优点:

  • 同时具备块存储的读写高速和文件存储的共享等特性。
  • 数据分析能力更为出色。 对象存储由元数据驱动,对每个数据片段进行这种级别的分类后,分析机会就大得多。
  • 可扩展性极高。 可以永久持续地添加数据。没有限制。
  • 数据检索速度更快。 由于对象存储的分类结构以及没有文件夹层次结构,因此,您可以更快地检索数据。
  • 成本降低。 由于对象存储的横向扩展特性,因此能够以较低的成本存储所有数据。
  • 资源优化。 由于对象存储没有归档层次结构,而且元数据可以完全自定义,因此限制比文件或块存储的要少得多。

对象存储的使用场景:

使用场景: (适合更新变动较少的数据)图片存储、视频存储、音频存储。

参考: Ceph介绍及原理架构分享

文件存储

典型设备: FTP、NFS服务器

为了克服块存储文件无法共享的问题,所以有了文件存储。在服务器上架设FTP与NFS服务,就是文件存储。文件存储将数据作为一条信息存储在文件夹中,以便于区分其他数据进行组织。这也称为分层存储,模仿了纸质文件的存储方式。当您需要访问数据时,您的计算机系统需要知道数据的路径。

文件存储优缺点

优点:

  • 造价低,随便一台机器就可以了。
  • 方便文件共享。

缺点:

  • 读写速率低。
  • 传输速率慢。

文件存储使用场景:

  • 日志存储。
  • 有目录结构的文件存储。

参考: Ceph介绍及原理架构分享

对象存储与文件存储的区别

所谓文件系统的本质是POSIX接口,“对象”这个名词是做对象存储的人为了把自己做的东西和文件系统区分开而用的术语,把存在对象存储里的文件叫做“对象”,所以选择文件系统还是对象存储,跟你把这堆数据称作对象还是文件并没有直接关系,而是要看你是需要POSIX还是RESTful HTTP接口,是需要目录结构还是适用扁平数据管理结构以及数据是否高频修改。对象存储将所有内容放置在一个称为存储池的扁平地址空间中。如果需要RESTful HTTP接口、不需要目录结构、数据修改也不频繁,扁平数据管理结构的对象存储是比较好的选择。

参考: 学习笔记 - swift 对象存储 和 Hadoop文件系统 区别

1、概念上的区别

对象存储也就是我们说的键值存储,其接口就是简单的GET,PUT,DEL和其他扩展。

文件存储通常支持POSIX接口,它跟传统的文件系统是一个类型,区别在于分布式存储提供了并行化的功能,如Ceph的CephFS。但有时也会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。

2、IO特点区别

针对对象存储来说,接口简单,一个对象就可以看成是一个文件,只能全写全拼,都是以大文件为主,因此要求足够的IO带宽。

文件存储的话具有更丰富的文件名及入口,是需要考虑目录、文件属性等支持的。实现一个支持并行化的文件存储应该是很困难的。

3、Ceph支持

Ceph是同时支持对象存储和文件存储的,只是对应的接口不同。对象存储接口主要以S3与Swift为主,文件存储的话是以libcephfs库与posix接口为主。因此在接口上会存在一定的差异。

以上信息就是众一互联针对对象存储和文件存储的概念以及区别的介绍,希望大家对这两种存储方式有了一定的了解,在后期选择存储方式的时候就会有一定的参考。

参考: 对象存储和文件存储的区别

HDFS(Hadoop Distributed File System)

HDFS是一种依靠网络通信的分布式文件存储系统,是传统NFS(Network File System,网络文件系统)的延伸。HDFS的文件分布在集群机器上,同时提供副本进行容错及可靠性保证。例如客户端写入读取文件的直接操作都是分布在集群各个机器上的,没有单点性能压力。

HDFS 是用来处理大吞吐量的离线数据,它需要牺牲一定的延时为代价,因此它不太适合哪些对延时有较高要求的应用程序。

其次,HDFS 被设计用来处理大数据文件,它通常对大文件进行优化,而在处理大量小文件时反而会使其耗费更多内存,从而影响数据处理的效率。此外,HDFS 中一次只能写入一个文件,不支持多用户并发写入。

参考: 学习笔记 - swift 对象存储 和 Hadoop文件系统 区别深入理解HDFS:Hadoop分布式文件系统

Ceph

Ceph是加州大学Santa Cruz分校的Sage Weil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统。自2007年毕业之后,Sage开始全职投入到Ceph开 发之中,使其能适用于生产环境。Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。2010年3 月,Linus Torvalds将Ceph client合并到内 核2.6.34中。IBM开发者园地的一篇文章

探讨了Ceph的架构,它的容错实现和简化海量数据管理的功能。

参考: Ceph 分布式文件系统

CDN(Content Distribute Network)

让数据离用户更近一点

CDN(Content Delivery Network)是内容分发网络。基本思路就是在网络各处部署服务节点,系统实时地根据网络流量、负载状况、服务节点到用户的响应时间等信息,自动将用户请求到导向离用户最近的节点上。目的就是让用户就近取得数据,提高响应速度。

CDN本质上是一个分布式缓存系统,每个服务节点上都缓存了源站的一部分数据,也就是用户最近经常访问的数据。这样大部分用户请求其实都是在CDN边缘节点上完成,并没有达到 源站 ,这样减少了响应时间,也减轻了 源站 的负担,可以实现高流量、大并发的网站访问。

CDN对动态资源是无效的,主要适合对静态资源的访问加速。比如一些网页内容需要数据查询才能获得,而每次要获得查询结果都要经过数据库的操作,再经过Web应用服务器的一些逻辑处理才能得到,这样就没法用CDN来加速。因为每次请求的数据都不一样,缓存过去访问过的数据没有意义。

CDN主要应用于站点加速,提高网站中静态数据的访问性能,比如图片、音频、视频、静态HTML网页等。网站静态数据以前一般是用文件存储的形式保存,现在则主要用对象存储。使用对象存储的原因还是因为对象存储适合存储低频修改、组织结构扁平化的数据,而静态资源大多为视频、图片、音频,完美符合对象存储的应用场景。

CDN 的关键技术

(1)内容发布:借助于索引、缓存、流分裂、组播等技术,将内容发布或投递到距离用户最近的服务节点;

(2)内容路由:整体性的网络负载均衡技术,通过内容路由器中的重定向机制,在多个服务节点上均衡用户的请求;

(3)内容交换:根据内容、服务节点以及用户的信息,利用应用层交换、流分裂等技术,智能地平衡负载流量;

(4)性能管理:通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能。

三者的关系

对象存储的核心是存储,以及计算能力(图片处理),CDN的核心是分发,是一种内容调度机制和策略,本身不会给用户提供直接操作存储的入口,底层使用的存储结构是对象存储。CDN是对象存储的一个典型应用场景。网站静态数据以前一般是用文件存储的形式保存,现在则主要用对象存储。使用对象存储的原因还是因为对象存储适合存储低频修改、组织结构扁平化的数据,而静态资源大多为视频、图片、音频,完美符合对象存储的应用场景。

HDFS称为Hadoop 分布式文件系统,是一种基于文件的存储,与之相对的是基于对象的存储,也就是对象存储Object Storage),对象存储的存取单元都是对象。HDFS与对象存储的区别是对象存储支持RESTful HTTP接口、不需要目录结构、数据修改也不频繁,数据管理结构扁平。 两者的应用场景不同。

CDN与对象存储的配合使用

一般申请一个CDN域名,然后将这个CDN域名绑定某个源站,就能够用这个CDN域名代替对象存储原本的临时域名来访问资源,使用方式也只需用cdn域名替换原来的对象存储域名即可,在域名后面带上{bucket}/key即可。

比如下面是七牛云给bucket绑定域名的界面。

在新打开的标签页中输入已经备案的域名,点击创建,之后就可以使用这个域名来访问bucket的资源了,使用方式还是「域名/{bucket}/{objectName}」

从cdn下载资源有两种方式,一种是后端下载后传递给前端,另一种是前端直接从CDN下载。后端下载应该就是建立socket连接,然后传输数据流,前端下载不太清楚是怎么实现的,所以后来学习了一下,详见:前端从web服务器或者CDN下载资源

参考:

一分钟看懂对象存储和CDN之间的关系 

什么是对象存储?

Ceph 分布式文件系统

对象存储和文件存储的区别

学习笔记 - swift 对象存储 和 Hadoop文件系统 区别

深入理解HDFS:Hadoop分布式文件系统

Ceph介绍及原理架构分享

欢迎关注公众号 TestDevelop , 我在这里分享各种测试开发技术知识、沟通技巧、职场感言。欢迎后续与我共同成长。  

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值