!guide_close_btn!

【长篇原创连载】煮“九”谈“千”第十九回《无限扁平,对象通吃》

digest
乐享问道 2016-4-12 10:36:33 最新回复:2016-05-22 11:45:16
7666 5 1 0

第十九回

无限扁平,对象通吃

 

诸君安好,如今清明刚过,正是春暖花开,草长莺飞的时候。前朝才子,踏青郊游之际,多蹴鞠投壶,行酒令,对对子,以助兴致。

今天咱们也凑个热闹,小欧请诸位猜个谜语,打一个IT专业术语,题目如下图。

【长篇原创连载】煮“九”谈“千”第十九回《无限扁平,对象通吃》-1049075-1

耶,果然众位看官皆高人也,谜底就是一对大象,简称“对象”。

那么这个对象跟我大存储派门又有什么关系?且听在下慢慢道来。

 

对象存储协议是一种简化的存储协议,适于存储海量的、非结构化的、读多于写的数据。

SAN存储提供给应用的是一个LUN或者是一个卷,LUN和卷是面向磁盘空间的一种组织方式,上层应用要通过FC或者ISCSI协议访问SANSAN存储处理的是管理磁盘的问题,其它事情都要依靠上层的应用程序实现。

NAS存储提供给应用的是一个文件系统或者是一个文件夹,上层应用通过NFSCIFS协议进行访问。文件系统要维护一个目录树。

相比于SANNAS存储,对象存储具有以下特点:

1.         舍弃目录树结构,结构扁平,近乎无限的容量扩展;

2.         更加智能的自管理特性;

3.         业界标准互联网协议,跨地域传输能力;

4.         更加符合面向互联网服务的存储,归档和备份需求。

【长篇原创连载】煮“九”谈“千”第十九回《无限扁平,对象通吃》-1049075-2

 

既称之为对象存储,那么何谓对象?

对象是存储的基本数据单位。用户上传的数据以对象的形式存储系统中。对象的属性包括以下几部分:

Key:对象的名称,为经过UTF-8编码的长度大于0且不超过1024的字符序列,一个桶(这个概念稍后说明)里的每个对象必须拥有唯一的对象名称。用户可使用桶名+对象名来存储和获取对应的对象。

Metadata:对象元数据,用来描述对象的信息。元数据又可分为系统元数据和用户元数据。系统元数据由系统产生,在处理对象数据时使用。系统元数据包括:Date, Content-length, last-modify, Content-MD5等。用户元数据由用户上传对象时指定,是用户自己对对象的一些描述信息。这些元数据以键值对(Key-value)的形式随http头域一起上传到系统。

Data:数据,即对象的数据内容。

通常,我们将对象等同于文件来进行管理,但实际上对象存储中并没有文件系统中的文件和文件夹概念。为了使用户更方便进行管理数据,通常采用模拟文件夹的形式。流入在对象的名称中增加“/”。这样abc/123.jpgabc就可以模拟成文件夹了,123.jpg就可以模拟成文件名了,而完整的对象名称(key)仍然是abc/123.jpg

 

当今对象存储主要分为两派,一为AWS S3,一位Openstack Swift,都是漂洋过海来我中土大地的“洋和尚”,两者各有千秋。

S3Simple Storage Service)协议由Amazon提出和实现,是云存储领域的事实标准。S3协议基于HTTP协议,是一种成熟的RESTREpresentational State Transfer)风格的协议。REST风格的协议遵循并利用了HTTP协议的设计原则,具有简单、可靠、无状态的特征,并天然的易于通过网络访问。

OceanStor 9000兼容S3接口,采用桶(Bucket/对象(Object)模型。对外提供基于Http/HttpsRestful接口,使用URL定位和使用自己的数据。概念说明如下:

桶(Bucket

桶是一种容器,用于存放对象,可视为能够通过网络访问的目录。桶不支持嵌套,因此避免了有层次的容器结构,以及随之带来的复杂性。

对象(Object

对象即是数据,可视为能够通过网络访问的文件。对象总是存放于一个桶中。

帐户

想要使用对象存储服务(兼容Amazon S3接口),必须预先开通帐户。帐户就是资源的所有者,可以对桶进行增、删、查、配置属性等操作,也可以对对象进行上传、下载、查询等操作。

用户

帐户可以创建、管理用户,用户从属于帐户。帐户可通过赋予用户各种权限,来控制用户对存储资源的使用。

概念之间的关系如下图所示。

【长篇原创连载】煮“九”谈“千”第十九回《无限扁平,对象通吃》-1049075-3
OpenStack
是一个旨在为公有云及私有云的建设与管理提供软件的开源项目,Swift背靠开源项目。是其中的分布式存储模块。OceanStor 9000兼容OpenStack Swift接口,可直接融入企业的OpenStack生态系统。

对象存储服务(兼容OpenStack Swift接口)拥有分布式、可扩展的结构,对外提供RESTful API,所有资源都可通过URL定位。数据用Account/Container/Object的非网状结构组织,可支持存储海量的数据。概念说明如下:

Account

拥有Account是使用对象存储服务(兼容OpenStack Swift接口)的前提条件。Account就是资源的所有者和管理者,使用Account可以对Container进行增、删、查、配置属性等操作,也可以对Object进行上传、下载、查询等操作。

在对象存储服务(兼容OpenStack Swift接口)中,Account也被抽象为顶层的资源容纳者,可将Account视为根目录,用于存放该Account的数据,各Account的数据存放在各自的Account内。

Container

Container即是一种容器,用于存放对象,可视为能够通过网络访问的目录。Container不支持嵌套,因此避免了有层次的容器结构,以及随之带来的复杂性。

Object

Object即对象,也就是数据,可视为能够通过网络访问的文件。Object总是存放于一个Container中。

概念之间的关系如下图所示。

1 AcountContainerObject的关系
【长篇原创连载】煮“九”谈“千”第十九回《无限扁平,对象通吃》-1049075-4

好了,今天就说到这,关于对象存储更多事,且听下回分解。

本帖被以下专题推荐:

点评 回复

全部回复

IT管理员巴拉巴拉
IT管理员巴拉巴拉 2016-4-12 11:07:52

赞一个!终于又出新贴了!期待好久了呢~

点评 回复

li yue
li yue   2016-4-12 11:08:21

赞一个,赞二个!

点评 回复

笨笨土匪
笨笨土匪   2016-5-22 09:38:44

内容很新,谢谢楼主,了解存储新方向

点评 回复

建赟
建赟 2016-5-22 11:45:16

感谢分享!!

点评 回复

风荪11
风荪11   2016-5-3 16:52:12

有可以愉快的学习了

点评 回复

回复

您需要登录后才可以回帖 登录 | 注册
发表回复

内容安全提示:尊敬的用户您好,为了保障您、社区及第三方的合法权益,请勿发布可能给各方带来法律风险的内容,包括但不限于政治敏感内容,涉黄赌毒内容,泄露、侵犯他人商业秘密的内容,侵犯他人商标、版本、专利等知识产权的内容,侵犯个人隐私的内容等。也请勿向他人共享您的账号及密码,通过您的账号执行的所有操作,将视同您本人的行为,由您本人承担操作后果。详情请参看“用户协议

My Followers

登录参与交流分享

登录

屏蔽
!block_confirm_cont!
温馨提示
!bind_my_phone_cont!