Swift 最初是由 Rackspace 公司開發的高可用分散式物件存儲服務,並于 2010 年貢獻給 OpenStack HTTP://www.aliyun.com/zixun/aggregation/13856.html"> 開源社區作為其最初的核心子專案之一,為其 Nova 子專案提供虛機鏡像存儲服務。 Swift 構築在比較便宜的標準硬體存儲基礎設施之上,無需採用 RAID(磁片冗余陣列),通過在軟體層面引入一致性散列技術和資料冗余性,犧牲一定程度的資料一致性來達到高可用性和可伸縮性,支援多租戶模式、容器和物件讀寫操作, 適合解決互聯網的應用場景下非結構化資料存儲問題。
此專案是基於 Python 開發的,採用 Apache 2.0 授權合約,可用來開發商用系統。
基本原理
一致性散列(Consistent Hashing)
面對海量級別的物件,需要存放在成千上萬台伺服器和硬碟設備上,首先要解決定址問題,即如何將物件分佈到這些設備位址上。 Swift 是基於一致性散列技術,通過計算可將物件均勻分佈到虛擬空間的虛擬節點上,在增加或刪除節點時可大大減少需移動的資料量;虛擬空間大小通常採用 2 的 n 次冪,便於進行高效的移位操作;然後通過獨特的資料結構 Ring(環)再將虛擬節點映射到實際的物理存放裝置上,完成定址過程。