Swift是OpenStack的子项目之一,也称为对象储存,适用于储存永久类型的静态数据,例如:虚拟机镜像文件、图片、存档备份等
复制的三个副本如何联系在一起?
让我们用一些具体场景和介绍一些组件,来描述副本如何联系在一块。
Upload
PUT http://swift.example.com/v1/account/container/new_object
Cluster收到客户端的request,首先,系统将计算Data应当存放在哪个位置?根据Account name, Container name, Object name可以确定将要存放的区域(partition)。接着,开始在ring figures中查找对应的储存节点。然后,上传的data将被发送到各自对应的储存节点,在返回成功响应之前,至少需要成功写入三次,也就是说需要备份两份。接下来,容器数据库将异步更新
反映新的对象已经存在对应的节点。
Download
使用了一致的散列算法,partition名已经生成,在ring中查找将暴露出包含此partition的节点。接着,request将会到对应的储存节点进行对象提取,如果提取失败,request将会去别的副本节点进行提取data。
Swift Cluster Architecture
访问层传入API Request并且上传下载数据信息,是Object Storage System的重要组成部分,主要包括前段的负载均衡,SSL终端,认证server以及分布式运行的代理server。