範文齋

位置:首頁 > 校園範文 > 其他

存儲系統 基本要求

其他1.51W

基本原則:

存儲系統 基本要求

1、CAP理論

2000年Eric Brewer教授提出了著名的CAP理論,即:一個分佈式系統不可能滿足一致性,可用性和分區容錯性這三個需求,最多隻能同時滿足兩個。

2002年MIT的Seth Gilbert 和 Nancy lynch兩人證明了CAP理論的正確性。

根據CAP理論,一致性(C),可用性(A),分區容錯性(P),三者不可兼得,必須有所取捨。

因此係統架構師不要把精力浪費在如何設計才能同時滿足CAP三者的完美分佈式系統,而是應該研究如何進行取捨,滿足實際的業務需求。

C: Consistency(一致性),任何一個讀操作總是能讀取到之前完成的寫操作結果,也就是在分佈式環境中,多點的數據是一致的;

A: Availability(可用性),每一個操作總是能夠在確定的時間內返回,也就是系統隨時都是可用的;

P: Tolerance of network Partition(分區容忍性),在出現網絡分區(比如斷網)的情況下,分離的系統也能正常運行;

對於分佈式存儲系統而言,分區容錯性(P)是基本需求,因此只有CP和AP兩種選擇。CP模式保證分佈在網絡上不同節點數據的一致性,但對可用性支持不足,這類系統主要有BigTable, HBASE, MongoDB, Redis, MemcacheDB, Berkeley DB等。AP模式主要以實現"最終一致性(Eventual Consistency)"來確保可用性和分區容忍性,但弱化了數據一致性要求,典型系統包括Dynamo, Tokyo Cabinet, Cassandra, CouchDB, SimpleDB等。

2、Eventual Consistency(最終一致性)

簡而言之:過程鬆,結果緊,最終結果必須保持一致性。

從客戶端考慮數據一致性模型,假設如下場景:

存儲系統:它在本質上是大規模且高度分佈的系統,其創建目的是爲了保證耐用性和可用性。

進程A:對存儲系統進行讀寫。

進程B和C:這兩個進程完全獨立於進程A,也讀寫存儲系統。客戶端一致性必須處理一個觀察者(在此即進程A、B或C)如何以及何時看到存儲系統中的一個數據對象被更新。

根據以上場景可以得到如下三種一致性模型:

強一致性:在更新完成後,(A、B或C進行的)任何後續訪問都將返回更新過的值。

弱一致性:系統不保證後續訪問將返回更新過的值,在那之前要先滿足若干條件。從更新到保證任一觀察者看到更新值的時刻之間的這段時間被稱爲不一致窗口。

最終一致性:這是弱一致性的一種特殊形式;存儲系統保證如果對象沒有新的更新,最終所有訪問都將返回最後更新的值。如果沒有發生故障,不一致窗口的最大值可以根據下列因素確定,比如通信延遲、系統負載、複製方案涉及的副本數量。

客戶端一致性模型的變體有:

因果一致性(Causal consistency):如果進程A通知進程B它已更新了一個數據項,那麼進程B的後續訪問將返回更新後的值,且一次寫入將保證取代前一次寫入。與進程A無因果關係的進程C的訪問遵守一般的最終一致性規則

“讀己之所寫”一致性(Read-your-writes consistency):這是一個重要的模型。當進程A自己更新一個數據項之後,它總是訪問到更新過的值,絕不會看到舊值。這是因果一致性模型的一個特例。

會話一致性(Session consistency):這是上一個模型的實用版本,它把訪問存儲系統的進程放到會話的上下文中。只要會話還存在,系統就保證“讀己之所寫”一致性,系統保證也不會延續到新的會話。

單調讀一致性(Monotonic read consistency):如果進程已經看到過數據對象的某個值,那麼任何後續訪問都不會返回在那個值之前的值。

單調寫一致性(Monotonic write consistency):系統保證來自同一個進程的寫操作順序執行。要是系統不能保證這種程度的一致性,就非常難以編程了。

3、BASE理論

BASE,即Basically Availble(基本可用)、Soft-state (軟狀態)、Eventual Consistency (最終一致性)。BASE的英文意義是鹼,而ACID是酸,有點水火不容的意思。

關係數據庫的ACID模型擁有高一致性和可靠性,喪失可用性。ACID,即原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。其中的一致性強調事務完成時,數據庫處於一致的狀態。對於很多應用來說,一致性要求可以降低,而可用性(Availability)的要求則更爲明顯。從而產生了弱一致性的理論BASE。 BASE模型反ACID模型,完全不同ACID模型,犧牲高一致性,獲得可用性或可靠性。它僅需要保證系統基本可用,支持分區失敗,允許狀態在一定時間內不同步,保證數據達到最終一致性即可。BASE思想主要強調基本的可用性,如果你需要高可用性,也就是純粹的高性能,那麼就要以一致性或容錯性爲犧牲,BASE思想的'方案在性能上還是有潛力可挖的。

4、I/O五分鐘法則

1987年,Jim Gray 與 Gianfranco Putzolu 發表了"五分鐘法則"的觀點,簡而言之,如果一條記錄頻繁被訪問,就應該放到內存裏,否則的話就應該待在硬盤上按需要再訪問。這個臨界點就是五分鐘。看上去像一條經驗性的法則,實際上五分鐘的評估標準是根據投入成本判斷的,根據當時的硬件發展水準,在內存中保持1KB的數據成本相當於硬盤中存儲400秒的開銷(接近五分鐘)。這個法則在 1997 年左右的時候進行過一次回顧,證實了五分鐘法則依然有效(硬盤、內存實際上沒有質的飛躍),而這次的回顧則是針對 SSD 這個"新的舊硬件"可能帶來的影響。

隨着閃存時代的來臨,五分鐘法則一分爲二:是把 SSD 當成較慢的內存(extended buffer pool )使用還是當成較快的硬盤(extended disk)使用。小內存頁在內存和閃存之間的移動對比大內存頁在閃存和磁盤之間的移動。在這個法則首次提出的 20 年之後,在閃存時代,5 分鐘法則依然有效,只不過適合更大的內存頁(適合 64KB 的頁,這個頁大小的變化恰恰體現了計算機硬件工藝的發展,以及帶寬、延時)。

根據數據結構和數據特點的不同,對於文件系統來說, 操作系統傾向於將 SSD 當作瞬時內存(cache)來使用。而對於數據庫,傾向於將 SSD 當作一致性存儲來用。

5、Amdahl定律和Gustafson定律

這裏我們以S(n)表示n核系統對具體程序的加速比,K表示串行部分計算時間比例。

Amdahl 定律的加速比:S(n) = 使用1個處理器的串行計算時間 / 使用n個處理器的並行計算時間,S(n) = 1/(K+(1-K)/n) = n/(1+(n-1)K)

Gustafson定律的加速比:S(n) = 使用n個處理器的並行計算量 / 使用1個處理器的串行計算量,S(n) = K+(1-K)n

通俗的講,Amdahl定律將工作量看作1,有n核也只能分擔1-K的工作量;

而Gustafson定律則將單核工作量看作1,有n核就可以增加n(1-K)的工作量。

這裏沒有考慮引進分佈式帶來的開銷,如網絡和加鎖。從性能價格比的角度看,並不是越分佈越好。

標籤:存儲系統