OpenStack云管理系统:swift概念讲解

来源:互联网 发布:淘宝客推广的效果 编辑:程序博客网 时间:2024/05/20 21:18

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。

 

[1].官网: http://www.openstack.org/projects/storage/

[2]adrian otto 的博客: http://adrianotto.com/2010/09/openstack-os-is-great-for/此文章待翻译。

[3] Finding a needle in Haystack: Facebook’s photo storage

[4]http://www.nosqlnotes.net/archives/116 淘宝杨传辉的博客

[5]http://www.dbanotes.net/arch/facebook_photos_arch.html  DBA Notes的博客

原创粉丝点击