swift简介

swift是一个设计以低廉的价格存储海量非结构化数据的,多租户,高伸缩性高持久性的对象存储系统。高伸缩性意味着它可以支持少量节点的集群,也可以用于数千台服务器的大型集群。swift设计用于水平扩展,因此不存在单节点故障。

swift通常用来存储非结构化数据,如文档,图像,视频,网页,备份,虚拟机快照等。

swift的主要特别包括:可伸缩性,数据持久性,高并发,开源,成本低

可伸缩性:

swift可以根据存储的数据量和用户数目线性伸缩,这意味着swift可以是只有几个节点集群,也可以部署为多机房,上千节点的集群。(Swift已经支持Erasure Code和跨多个数据中心部署等高级功能,已经有较多的商业化案例)

高可用性:

swift有极高的可用性,为了实现这一点,swift集群中每一个对象均有三个副本(可调节),每次写入至少要在两个以上的副本中写入完成,才会被认为成功。

审计器(auditor)会确保过期或者丢失的数据被更新为较新的数据。复制器(replicator)会确保文件存储多份,并在文件丢失后通过复制文件的方式保证数据的可用性。

高并发性:

海量存储空间固然对一个存储系统来说比较重要,但更有用和更重要的是一个存储系统的并发性。swift通过无共享(share-nothing)的构架能轻松的处理大量的并发请求。

开源:

swift 是在Apache 2 license下开发的一个开源项目,与其它开源项目不同的是,swift在发布前已经在rackspace内部作为私有云投入商业使用,在高并发的生产 环境下经过了足够多的测试。有超过100名工程师参与了swift的研发,并且随着项目的发展有越来越多的工程人员参与进来。

随着项目的进行,swift相关的工具,扩展也不断被开发出来,并且swift本身也易于扩展,可以根据自己的需要进行二次开发

成本低:

比起商业的存储服务解决方案,swift的实现成本大约是商业解决方案的十分之一,却有更好的可靠性,以及更多的使用案例。

商业的存储解决方案,在升级扩展时,往往存在厂商绑定的问题,而swift则可以任意选择设备搭建集群。

通过扩展,swift还有更多的特性:静态web站点,自动过期对象,限时URL,配额管理,直接网页上传,版本控制,分片上传,多点下载等。

静态web站点:

用Swift作为静态站点的WEB服务器

自动过期对象:

让对象在指定时间后过期

限时URL:

让生成的URL在限定时间后过期

配额管理:

管理每个账户以及容器的容量

直接网页上传:

让用户可以不经过系统应用服务器,直接通过网页上传文件至云存储集群

版本控制:

同一对象升级版本后,可以恢复到之前的版本,数据不会丢失

分片上传:

同一对象,可以分成多个片段同时上传

多点下载:

同一对象,可以从多个片段同时下载

swift是对象存储系统,与传统的文件级存储或数据块级存储是有区别的

块存储使用未格式化的硬盘,基于块的存储系统,磁盘块通过底层存储协议访问,像SCSI命令,开销很小而且没有其它额外的抽象层。这是访问磁盘数据最快的方式,所有高级别的任务,像多用户访问、共享、锁定和安全通常由操作系统负责。

文件存储使用格式化的硬盘。文件存储对底层的存储设备提供了一些抽象,但当数据量较大时,文件系统工作的并不是很高效。