存儲系統 基本要求
基本原則:
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)的工作量。
這裏沒有考慮引進分佈式帶來的開銷,如網絡和加鎖。從性能價格比的角度看,並不是越分佈越好。
-
【精】實用的西遊記作文7篇
在平凡的學習、工作、生活中,許多人都寫過作文吧,藉助作文人們可以實現文化交流的目的。那麼你有了解過作文嗎?以下是小編整理的西遊記作文7篇,僅供參考,希望能夠幫助到大家。西遊記作文篇1《西遊記》我已經讀了好幾遍了,它在四大名著中是最生動活潑的,每次讀他,面...
-
(熱)西遊記學生作文10篇
在日常學習、工作和生活中,說到作文,大家肯定都不陌生吧,藉助作文人們可以實現文化交流的目的。爲了讓您在寫作文時更加簡單方便,以下是小編幫大家整理的西遊記學生作文10篇,歡迎閱讀與收藏。西遊記學生作文篇1《西遊記》第三回:大鬧天宮,悟空拿着金箍棒回到了花果山,...
-
數學評課稿【精】
作爲一名教學工作者,很有必要精心設計一份評課稿,評課的類型很多,有同事之間互相學習、共同研討評課;有學校領導診斷、檢查的評課;有上級專家鑑定或評判的評課等。我們該怎麼去寫評課稿呢?以下是小編整理的數學評課稿,僅供參考,大家一起來看看吧。數學評課稿1宋老師的...
-
讀西遊記作文400字共10篇
在平時的學習、工作或生活中,許多人都有過寫作文的經歷,對作文都不陌生吧,作文一定要做到主題集中,圍繞同一主題作深入闡述,切忌東拉西扯,主題渙散甚至無主題。如何寫一篇有思想、有文采的作文呢?以下是小編爲大家整理的讀西遊記作文400字10篇,僅供參考,歡迎大家閱讀。...