- 相關(guān)推薦
存儲方案設計原則
設計是 把一種設想 通過(guò)合理的規劃 周密的計劃 通過(guò)各種感覺(jué)形式傳達出來(lái)的過(guò)程。以下是小編整理的存儲方案設計原則,希望能夠幫助到大家!
1、CAP理論
2000年Eric Brewer教授提出了著(zhù)名的CAP理論,即:一個(gè)分布式系統不可能滿(mǎn)足一致性,可用性和分區容錯性這三個(gè)需求,最多只能同時(shí)滿(mǎn)足兩個(gè)。
2002年MIT的Seth Gilbert 和 Nancy lynch兩人證明了CAP理論的正確性。
根據CAP理論,一致性(C),可用性(A),分區容錯性(P),三者不可兼得,必須有所取舍。
因此系統架構師不要把精力浪費在如何設計才能同時(shí)滿(mǎn)足CAP三者的完美分布式系統,而是應該研究如何進(jìn)行取舍,滿(mǎn)足實(shí)際的業(yè)務(wù)需求。
C: Consistency(一致性),任何一個(gè)讀操作總是能讀取到之前完成的寫(xiě)操作結果,也就是在分布式環(huán)境中,多點(diǎn)的數據是一致的;
A: Availability(可用性),每一個(gè)操作總是能夠在確定的時(shí)間內返回,也就是系統隨時(shí)都是可用的;
P: Tolerance of network Partition(分區容忍性),在出現網(wǎng)絡(luò )分區(比如斷網(wǎng))的情況下,分離的系統也能正常運行;
對于分布式存儲系統而言,分區容錯性(P)是基本需求,因此只有CP和AP兩種選擇。CP模式保證分布在網(wǎng)絡(luò )上不同節點(diǎn)數據的一致性,但對可用性支持不足,這類(lèi)系統主要有BigTable, HBASE, MongoDB, Redis, MemcacheDB, Berkeley DB等。AP模式主要以實(shí)現"最終一致性(Eventual Consistency)"來(lái)確?捎眯院头謪^容忍性,但弱化了數據一致性要求,典型系統包括Dynamo, Tokyo Cabinet, Cassandra, CouchDB, SimpleDB等。
2、Eventual Consistency(最終一致性)
簡(jiǎn)而言之:過(guò)程松,結果緊,最終結果必須保持一致性。
從客戶(hù)端考慮數據一致性模型,假設如下場(chǎng)景:
存儲系統:它在本質(zhì)上是大規模且高度分布的系統,其創(chuàng )建目的是為了保證耐用性和可用性。
進(jìn)程A:對存儲系統進(jìn)行讀寫(xiě)。
進(jìn)程B和C:這兩個(gè)進(jìn)程完全獨立于進(jìn)程A,也讀寫(xiě)存儲系統?蛻(hù)端一致性必須處理一個(gè)觀(guān)察者(在此即進(jìn)程A、B或C)如何以及何時(shí)看到存儲系統中的一個(gè)數據對象被更新。
根據以上場(chǎng)景可以得到如下三種一致性模型:
強一致性:在更新完成后,(A、B或C進(jìn)行的)任何后續訪(fǎng)問(wèn)都將返回更新過(guò)的值。
弱一致性:系統不保證后續訪(fǎng)問(wèn)將返回更新過(guò)的值,在那之前要先滿(mǎn)足若干條件。從更新到保證任一觀(guān)察者看到更新值的時(shí)刻之間的這段時(shí)間被稱(chēng)為不一致窗口。
最終一致性:這是弱一致性的一種特殊形式;存儲系統保證如果對象沒(méi)有新的更新,最終所有訪(fǎng)問(wèn)都將返回最后更新的值。如果沒(méi)有發(fā)生故障,不一致窗口的最大值可以根據下列因素確定,比如通信延遲、系統負載、復制方案涉及的副本數量。
客戶(hù)端一致性模型的變體有:
因果一致性(Causal consistency):如果進(jìn)程A通知進(jìn)程B它已更新了一個(gè)數據項,那么進(jìn)程B的后續訪(fǎng)問(wèn)將返回更新后的值,且一次寫(xiě)入將保證取代前一次寫(xiě)入。與進(jìn)程A無(wú)因果關(guān)系的進(jìn)程C的訪(fǎng)問(wèn)遵守一般的最終一致性規則。
“讀己之所寫(xiě)”一致性(Read—your—writes consistency):這是一個(gè)重要的模型。當進(jìn)程A自己更新一個(gè)數據項之后,它總是訪(fǎng)問(wèn)到更新過(guò)的值,絕不會(huì )看到舊值。這是因果一致性模型的一個(gè)特例。
會(huì )話(huà)一致性(Session consistency):這是上一個(gè)模型的實(shí)用版本,它把訪(fǎng)問(wèn)存儲系統的進(jìn)程放到會(huì )話(huà)的上下文中。只要會(huì )話(huà)還存在,系統就保證“讀己之所寫(xiě)”一致性,系統保證也不會(huì )延續到新的會(huì )話(huà)。
單調讀一致性(Monotonic read consistency):如果進(jìn)程已經(jīng)看到過(guò)數據對象的某個(gè)值,那么任何后續訪(fǎng)問(wèn)都不會(huì )返回在那個(gè)值之前的值。
單調寫(xiě)一致性(Monotonic write consistency):系統保證來(lái)自同一個(gè)進(jìn)程的寫(xiě)操作順序執行。要是系統不能保證這種程度的一致性,就非常難以編程了。
3、BASE理論
BASE,即Basically Availble(基本可用)、Soft—state (軟狀態(tài))、Eventual Consistency (最終一致性)。BASE的英文意義是堿,而ACID是酸,有點(diǎn)水火不容的意思。
關(guān)系數據庫的ACID模型擁有高一致性和可靠性,喪失可用性。ACID,即原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。其中的一致性強調事務(wù)完成時(shí),數據庫處于一致的狀態(tài)。對于很多應用來(lái)說(shuō),一致性要求可以降低,而可用性(Availability)的要求則更為明顯。從而產(chǎn)生了弱一致性的理論BASE。 BASE模型反ACID模型,完全不同ACID模型,犧牲高一致性,獲得可用性或可靠性。它僅需要保證系統基本可用,支持分區失敗,允許狀態(tài)在一定時(shí)間內不同步,保證數據達到最終一致性即可。BASE思想主要強調基本的可用性,如果你需要高可用性,也就是純粹的高性能,那么就要以一致性或容錯性為犧牲,BASE思想的方案在性能上還是有潛力可挖的。
4、I/O五分鐘法則
1987年,Jim Gray 與 Gianfranco Putzolu 發(fā)表了"五分鐘法則"的觀(guān)點(diǎn),簡(jiǎn)而言之,如果一條記錄頻繁被訪(fǎng)問(wèn),就應該放到內存里,否則的話(huà)就應該待在硬盤(pán)上按需要再訪(fǎng)問(wèn)。這個(gè)臨界點(diǎn)就是五分鐘?瓷先ハ褚粭l經(jīng)驗性的法則,實(shí)際上五分鐘的評估標準是根據投入成本判斷的,根據當時(shí)的硬件發(fā)展水準,在內存中保持1KB的數據成本相當于硬盤(pán)中存儲400秒的開(kāi)銷(xiāo)(接近五分鐘)。這個(gè)法則在 1997 年左右的時(shí)候進(jìn)行過(guò)一次回顧,證實(shí)了五分鐘法則依然有效(硬盤(pán)、內存實(shí)際上沒(méi)有質(zhì)的飛躍),而這次的回顧則是針對 SSD 這個(gè)"新的舊硬件"可能帶來(lái)的影響。
隨著(zhù)閃存時(shí)代的來(lái)臨,五分鐘法則一分為二:是把 SSD 當成較慢的內存(extended buffer pool )使用還是當成較快的硬盤(pán)(extended disk)使用。小內存頁(yè)在內存和閃存之間的移動(dòng)對比大內存頁(yè)在閃存和磁盤(pán)之間的移動(dòng)。在這個(gè)法則首次提出的 20 年之后,在閃存時(shí)代,5 分鐘法則依然有效,只不過(guò)適合更大的內存頁(yè)(適合 64KB 的頁(yè),這個(gè)頁(yè)大小的變化恰恰體現了計算機硬件工藝的發(fā)展,以及帶寬、延時(shí))。
根據數據結構和數據特點(diǎn)的不同,對于文件系統來(lái)說(shuō), 操作系統傾向于將 SSD 當作瞬時(shí)內存(cache)來(lái)使用。而對于數據庫,傾向于將 SSD 當作一致性存儲來(lái)用。
5、Amdahl定律和Gustafson定律
這里我們以S(n)表示n核系統對具體程序的加速比,K表示串行部分計算時(shí)間比例。
Amdahl 定律的加速比:S(n) = 使用1個(gè)處理器的串行計算時(shí)間 / 使用n個(gè)處理器的并行計算時(shí)間,S(n) = 1/(K+(1—K)/n) = n/(1+(n—1)K)
Gustafson定律的加速比:S(n) = 使用n個(gè)處理器的并行計算量 / 使用1個(gè)處理器的串行計算量,S(n) = K+(1—K)n
通俗的講,Amdahl定律將工作量看作1,有n核也只能分擔1—K的工作量;
而Gustafson定律則將單核工作量看作1,有n核就可以增加n(1—K)的工作量。
這里沒(méi)有考慮引進(jìn)分布式帶來(lái)的開(kāi)銷(xiāo),如網(wǎng)絡(luò )和加鎖。從性能價(jià)格比的角度看,并不是越分布越好。
【存儲方案設計原則】相關(guān)文章:
技術(shù)方案設計原則04-25
網(wǎng)絡(luò )在線(xiàn)存儲工具有哪些?04-17
存儲系統 基本要求07-02
中國郵政銀行存儲利息07-12
立冬養生原則07-05
MBA的面試原則07-01
選股票的原則07-04
股票成交原則07-02
股票的成交原則07-02
面試的原則解析07-13