Swift是OpenStack的子項目之一,也稱爲對象儲存,適用於儲存永久類型的靜態數據,例如:虛擬機鏡像文件、圖片、存檔備份等算法
讓咱們用一些具體場景和介紹一些組件,來描述副本如何聯繫在一塊。數據庫
用戶端調用Swift提供的REST API,PUT一個對象到一個已經存在的容器中。PUT http://swift.example.com/v1/account/container/new_object
swift
Cluster收到客戶端的request,首先,系統將計算Data應當存放在哪一個位置?根據Account name, Container name, Object name能夠肯定將要存放的區域(partition)。接着,開始在ring figures中查找對應的儲存節點。而後,上傳的data將被髮送到各自對應的儲存節點,在返回成功響應以前,至少須要成功寫入三次,也就是說須要備份兩份。接下來,容器數據庫將異步更新負載均衡
反映新的對象已經存在對應的節點。異步
使用了一致的散列算法,partition名已經生成,在ring中查找將暴露出包含此partition的節點。接着,request將會到對應的儲存節點進行對象提取,若是提取失敗,request將會去別的副本節點進行提取data。分佈式
訪問層傳入API Request而且上傳下載數據信息,是Object Storage System的重要組成部分,主要包括前段的負載均衡,SSL終端,認證server以及分佈式運行的代理server。
spa