作者:政委锤炼_394_774 | 来源:互联网 | 2014-05-27 20:14
0swift介绍0.1swift是什么?OpenStackObjectStorage最开始是由Rackspace开发,并于2010年7月贡献给OpenStack,作为其开源子项目。OpenStackObjectStorage最初作为RackspaceCloudFilesservice的主体实现,工程代号为swift。因
0 swift 介绍
0.1swift 是什么?
OpenStack Object Storage 最开始是由 Rackspace 开发,并于 2010
年 7 月贡献给 OpenStack ,作为其开源子项目。 OpenStack Object Storage 最初作为
RackspaceCloud Files service 的主体实现,工程代号为 swift 。因此 swift 沿用至今。
下面的介绍引自官网[1]:
OpenStack Object Storage (code-named Swift) is open
source software forcreating redundant, scalable object storage
using clusters of standardizedservers to store petabytes of
accessible data. It is not a file system orreal-time data storage
system, but rather a long-term storage system for a morepermanent
type of static data that can be retrieved, leveraged, and
thenupdated if necessary. Primary examples of data that best fit
this type ofstorage model are virtual machine images, photo
storage, email storage andbackup archiving. Having no central
"brain" or master point ofcontrol provides greater scalability,
redundancy and permanence 。
OpenStackObject Storage (Swift)
是开源的,用来创建可扩展的、冗余的、对象存储(引擎)。 swift 使用标准化的服务器存储 PB 级可用数据。但它并不是文件系统
(file system) ,实时的数据存储系统 (real-timedata storage system) 。 swift
看起来更像是一个长期的存储系统 (long term storage system)
,为了获得、调用、更新一些静态的永久性的数据。比如说,适合存储一些类型的数据:虚拟机镜像,图片存储,邮件存储,文档的备份。没有“单点”或者主控结点
(master point of control) , swift 看起来具有更强的扩展性、冗余和持久性。
0.2swift 能做什么
长于存储非结构化数据,大、小文件性能据说都很好(目前没有测试数据, adrian otto 说测试过
10 亿个 1byte 数据)。
文章[2] 的 Use OpenStack ObjectStorage For 中,基本上只有一个词
(storage)... 存储,各种存储,可以达 PB 级。
0.3swift 不能做什么
文章[2]的 Recognize the Limitations 罗列了一长串 swift
不擅长的地方,这里列出主要几项
Objects must be <5GB : swift 1.2 之后已经对 object
的大小不做限制
Not a Filesystem :不是文件系统。 swift 使用 REST API
,而不是使用传统意义上的文件操作命令, open(), read(), write(), seek(), 和 close()
等。
No File Locking :干脆不支持“文件锁”。其实在 swift
中,“锁”的概念是没有必要的。
No Directory Hierarchies :没有文件目录结构。 swift
可以模拟目录结构,但没有必要
Not a Database :不是数据库。 swift 使用
account-container-object 的概念存储 object ,可以列表出指定 container 中的 object
,不支持 server 端的查询和处理操作。
0.4 结论?
看起来 swift 貌似一无是处,除了“蹩脚”的存储外什么都做不了。
其实 adrian otto 更倾向于把 swift 和 HayStack 做类比。 HayStack
是 facebook 用来缓冲数据的中间层。
国内这方面资料相对较多,不赘述。
参看几篇文章[3]、[4]、[5]可能会有深入认识。
0.5 swift 怎么使用?
HTTP GET ,请求 object 的下载; HTTP HEAD 请求 object
metadata (元数据), HTTP DELETE 删除处理 object 。
支持多种语言封装对 object 的请求,包括 Java, Python, Perl, PHP,
.NET。