Swift是一个多租户、高扩展性和高可用性的对象存储系统,用于低成本地存储大量非结构化数据,例如文档、网页内容、备份、图片和虚拟机镜像等。2010年作为RackSpace云文件的引擎被开发出来。后来,成为了OpenStack的一部分。
Swift不是传统的文件系统或裸块设备,可以让你通过Restful HTTP API来存储、获取和删除容器中的对象及其元数据。开发者可以直接使用Swift API或者使用客户端。
Swift的关键属性包括
- 扩展性(Scalabilty)
根据存储的数据量和用户数量进行线性扩展。可以从少量盘的几个节点扩展到成千上万的节点,存储空间达PB级。随着对系统的使用和请求的增加,系统的性能不会降低。 - 持久性(Durability)
持久性的实质是保证存储的对象总是可用的并且保证对象的数据完整性。为了确保数据的持续可用性,Swift复制数据并且将副本分发到集群中。启动审计器(Auditor)来验证数据是否正确。启动复制器来确保集群中存在正确的副本数。 - 跨域能力(Multi-regional Capability)
通过允许操作者在集群内定义域和区来保障其跨域能力。域通常是指地理界限,如不同城市的数据中心。区是域的一部分,通常用来隔离硬件故障。 - 高并发(High concurrency)
允许将多个请求分发到多个服务器上。通过无共享架构,充分利用 可用的服务器性能来同时处理多个请求。更适用于处理大规模网络负载的情形 - 灵活的存储(Flexible storage)
- 开源(Open Source)
- 大生态系统(Large ecosystem)
- 在商业硬件上运行(Runs 欧尼commodity hardware)
- 对开发者友好(Developer-friendliness)
– 静态网页托管(static website hosting)
– 对象自动到期(automatically expiring objects)
给对象设置一个到期时间,对象到期后不再可用并且会被删除
– 限时URL(Time-limited URLS)
生成一个在时限内可用的网址。这些网址可以防止盗链或者用于启用临时写权限。
– 配额(Quotas)
可以在容器和账户上设置存储配额
– HTML表单直接上传(Upload directly from HTMl forms)
用户可以生成web表单,直接上传数据到Swift,而不需要通过另一个代理服务器
– 多版本写入(Versioned writes)
用户可以在保留所有旧版本的同时上传一个新的对象版本
– 支持分块传输编码(support for chunked transfer encoding)
用户可以在预先不知道对象内容总大小的情况下上传数据
– 多范围读(Multirange reads)
用户可以用一个单一读请求来读取一个对象的一部分或者多个部分
– 访问控制列表(Access Control lists)
用户可以配置数据访问权限,允许/拒绝他人访问数据
– 编程访问数据位置(Programmatic access to data locality)
– 可定制( Customizability)
可以开发直接运行在存储系统上的中间件 - 易于操作(Operator-friendly)