嚴(yán)格講,同一個(gè)分布式系統(tǒng)中的計(jì)算機(jī)在空間部署上是可以隨意分布的,這些計(jì)算機(jī)可能被放在不同的機(jī)柜上,也可能在不同的機(jī)房中,甚至分布在不同的城市。無論如何,一個(gè)標(biāo)準(zhǔn)的分布式系統(tǒng)在沒有任何特定業(yè)務(wù)邏輯約束的情況下,都會(huì)有以下幾個(gè)特征: 1、分布性 分布式系統(tǒng)中的多臺(tái)計(jì)算機(jī)都會(huì)在空間上隨意分布,同時(shí),及其的分布情況也會(huì)隨時(shí)變動(dòng)。 2、對(duì)等性 分布式系統(tǒng)中的計(jì)算機(jī)沒有主/從之分,既沒有控制整個(gè)系統(tǒng)的主機(jī),也沒有被控制的從機(jī),組成分布式系統(tǒng)的所有節(jié)點(diǎn)都是對(duì)等的。副本(Replica)是分布式系統(tǒng)最常見的概念之一,指的是分布式系統(tǒng)對(duì)數(shù)據(jù)和服務(wù)提供的一種冗余方式。在常見的分布式系統(tǒng)中,為了對(duì)外提高可用的服務(wù),我們往往會(huì)對(duì)數(shù)據(jù)和服務(wù)進(jìn)行副本處理。數(shù)據(jù)副本是指在不同的節(jié)點(diǎn)上持久化同一份數(shù)據(jù),當(dāng)某一個(gè)節(jié)點(diǎn)上存儲(chǔ) 數(shù)據(jù)丟失時(shí),可以從副本上讀取到該數(shù)據(jù),這是解決分布式系統(tǒng)數(shù)據(jù)丟失問題最為有效的手段。另一類副本是服務(wù)副本,指多個(gè)節(jié)點(diǎn)提供同樣的服務(wù),每個(gè)節(jié)點(diǎn)都有能力接收來自外部的請(qǐng)求并進(jìn)行相應(yīng)的處理。 3、并發(fā)性 在一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)中,程序運(yùn)行過程中的并發(fā)性操作是非常常見的行為,例如同一個(gè)分布式系統(tǒng)的多個(gè)節(jié)點(diǎn),可能會(huì)并發(fā)地操作一些共享的資源,諸如數(shù)據(jù)庫(kù)或分布式存儲(chǔ)等,如何準(zhǔn)確并高效地協(xié)調(diào)分布式并發(fā)操作也成為了分布式系統(tǒng)架構(gòu)與設(shè)計(jì)中最大的挑戰(zhàn)之一。 4、缺乏全局時(shí)鐘 一個(gè)典型的分布式系統(tǒng)是由一系列空間上隨意分布的多個(gè)進(jìn)程組成的,具有明顯的分布性,這些進(jìn)程之間通過交換消息來進(jìn)行相互通信。因此,在分布式系統(tǒng)中,很難定義兩個(gè)事件究竟誰先誰后,原因就是因?yàn)榉植际较到y(tǒng)缺乏一個(gè)全局的始終控制序列。 5、故障總是會(huì)發(fā)生 組成分布式系統(tǒng)的所有計(jì)算機(jī),都有可能發(fā)生任何形式的故障。一個(gè)被大量工程實(shí)踐過的黃金定理是:任何在設(shè)計(jì)階段考慮到的異常情況,一定會(huì)在系統(tǒng)實(shí)際運(yùn)行中發(fā)生,并且,在系統(tǒng)實(shí)際運(yùn)行中還會(huì)遇到很多在設(shè)計(jì)時(shí)未考慮到的異常故障。所以,除非需求指標(biāo)允許,在系統(tǒng)設(shè)計(jì)時(shí)不能放過任何異常情況。 6、處理單點(diǎn)故障 在整個(gè)分布式系統(tǒng)中,如果某個(gè)角色或者功能只有某臺(tái)單機(jī)在支撐,那么這個(gè)節(jié)點(diǎn)稱為單點(diǎn),其發(fā)生的故障稱為單點(diǎn)故障,也就是通常說的SPoF(Single Point of Failure),避免單點(diǎn)而對(duì)關(guān)鍵就是把這個(gè)功能從單機(jī)實(shí)現(xiàn)變?yōu)榧簩?shí)現(xiàn),當(dāng)然,這種變化一般會(huì)比較困難,否則就不會(huì)有單點(diǎn)問題了。如果不能把單點(diǎn)變?yōu)榧簩?shí)現(xiàn),那么一般還有兩種選擇: (1)給這個(gè)單點(diǎn)做好備份,能夠在出現(xiàn)問題時(shí)進(jìn)行恢復(fù),并且盡量做到自動(dòng)恢復(fù) (2)降低單點(diǎn)故障的影響范圍 從單機(jī)單用戶到單機(jī)多用戶,再到現(xiàn)在的網(wǎng)絡(luò)時(shí)代,應(yīng)用系統(tǒng)發(fā)生了很多的變化。而分布式系統(tǒng)依然是目前很熱門的討論話題,那么,分布式系統(tǒng)給我們帶來了什么,或者說是為什么要有分布式系統(tǒng)呢?從三方面考慮: 1、升級(jí)單機(jī)處理能力的性價(jià)比越來越低 摩爾定律:當(dāng)價(jià)格不變時(shí),每隔18個(gè)月,集成電路上可容納的晶體管數(shù)目會(huì)增加一倍,性能也將提升一倍。這個(gè)定律告訴我們,隨著時(shí)間的推移,單位成本的支出所能購(gòu)買的計(jì)算機(jī) 能力在提升。不過,如果我們把時(shí)間固定下來,也就是固定在某個(gè)具體時(shí)間點(diǎn)來購(gòu)買單顆不同型號(hào)的處理器,那么所購(gòu)買的處理器性能越高,所要付出的成本就越高,性價(jià)比就越低。那么,也就是說在一個(gè)確定的時(shí)間點(diǎn),通過更換硬件做垂直擴(kuò)展的方式來提升性能會(huì)越來越不劃算。 2、單機(jī)處理能力存在瓶頸 某個(gè)固定時(shí)間點(diǎn),單顆處理器有自己的性能瓶頸,也就說即使愿意花更多的錢去買計(jì)算能力也買不到了。 3、出于穩(wěn)定性和可用性的考慮 如果采用單擊系統(tǒng),那么在這臺(tái)機(jī)器正常的時(shí)候一切OK,一旦出問題,那么系統(tǒng)就完全不能用了。當(dāng)然,可以考慮做容災(zāi)備份等方案,而這些方案就會(huì)讓系統(tǒng)演變?yōu)榉植际较到y(tǒng)了。 關(guān)于分布式存儲(chǔ)系統(tǒng)的特點(diǎn)以及意義納恩恒泰就為大家介紹到這里了,希望對(duì)你們有所幫助。 |
|