ceph
ceph採用強一致性設計,即write-all-read-one,這種模式的好處在於讀取效率較高,而且工程難度較低,比較適合與讀多寫少的系統。
write-all-read-one的特點是必須等待所有的副本全部寫入完畢才算是寫入成功,這實際上對系統硬體的可靠性要求較高,因為如果在寫入過程中存在任意硬體故障,則寫入過程都要受影響。通常表現為卡頓,一般在數秒級別,時間長短和判斷故障的機制以及故障恢復過程中io的處理策略相關。
在任意物件訪問的時候,會指定其中乙個儲存節點(osd, object service device)多個副本中一定有乙個是主節點,由該主節點負責將資料分發到其他兩個節點。當然資料讀取時也是首先訪問主儲存節點,以此保證,返回的資料一定是最新的資料。
swift
swift 是基於一致性雜湊技術,通過計算可將物件均勻分布到虛擬空間的虛擬節點上,在增加或刪除節點時可**減少需移動的資料量;虛擬空間大小通常採用 2 的 n 次冪,便於進行高效的移位操作;然後通過獨特的資料結構 ring(環)再將虛擬節點對映到實際的物理儲存裝置上,完成定址過程。
資料一致性模型
swift 採用 quorum 仲裁協議(quorum 有法定投票人數的含義):
(1)定義:n:資料的副本總數;w:寫操作被確認接受的副本數量;r:讀操作的副本數量
(2)強一致性:r+w>n,以保證對副本的讀寫操作會產生交集,從而保證可以讀取到最新版本;如果 w=n,r=1,則需要全部更新,適合大量讀少量寫操作場景下的強一致性;如果 r=n,w=1,則只更新乙個副本,通過讀取全部副本來得到最新版本,適合大量寫少量讀場景下的強一致性。
(3)弱一致性:r+w<=n,如果讀寫操作的副本集合不產生交集,就可能會讀到髒資料;適合對一致性要求比較低的場景。
swift 針對的是讀寫都比較頻繁的場景,所以採用了比較折中的策略,即寫操作需要滿足至少一半以上成功 w >n/2,再保證讀操作與寫操作的副本集合至少產生乙個交集,即 r+w>n。
相對而言swift的儲存方式更靈活一些,可以犧牲一定的一致性從而提高讀取速度。而一致性可以通過後台的方式完成同步,從而保證資料的完整。
Swift與OC語法對比
1.模擬於oc語句最後不再需要分號結束 2.不再有.m與.h檔案,只有乙個.swift檔案 3.方法呼叫由 obj x 1 y 2 變為 obj.x 1,y 2 4.方法宣告 oc void setview swift func setview 注 方便起見以下前乙個為oc語法,後乙個為swift語...
Ceph與Gluster之開源儲存的對比
一 ceph與gluster之開源儲存的對比回到頂部 一 ceph與gluster之開源儲存的對比 一 ceph與gluster的原理對比 ceph和gluster是red hat旗下的成熟的開源儲存產品,ceph與gluster在原理上有著本質上的不同。1 ceph ceph基於乙個名為rados...
Swift 對比學習Swift構造器
首先建立乙個類 實現方法如下 而當我們利用建構函式生成例項時有以下幾種方法 在oc的例子中,構造器initwithname age 內部呼叫了另乙個構造器,避免了 重複,下面來圍觀swift中如何實現。在swift中,當你建立乙個類或者結構體的時候,它們的屬性一定有初值 否則編譯不過,例如let a...