培訓(xùn)無憂網(wǎng)合作機(jī)構(gòu) > 學(xué)校機(jī)構(gòu) > 北京AAA教育歡迎您!
分布式系統(tǒng)課程好學(xué)嗎
發(fā)布時間:2021-09-23 09:49:53
到底什么才是分布式系統(tǒng)?看了很多文章,感覺很少有文章能把這個概念解釋的既簡單,又清楚的。結(jié)合這自己的理解,我對分布式系統(tǒng)的概念做了下面的總結(jié)。
關(guān)于分布式系統(tǒng)的定義問題,我傾向從字面上來解釋:分開部署的系統(tǒng)就可以稱為分布式系統(tǒng)。比如,一個系統(tǒng)原本由前端頁面、后臺服務(wù)和后端數(shù)據(jù)庫組成,將這些服務(wù)全都部署在一臺機(jī)器上,這種應(yīng)用叫單體應(yīng)用。現(xiàn)在我們將數(shù)據(jù)庫拿出來,單獨(dú)部署到另外一臺機(jī)器上,后端服務(wù)和數(shù)據(jù)庫之間通過網(wǎng)絡(luò)通信,這種部署方式就是一種最簡單的分布式系統(tǒng)。
再比如說,原本有一個后端服務(wù),能支持500QPS的并發(fā)請求,F(xiàn)在業(yè)務(wù)量上升,需要能支持1000QPS的并發(fā)量。此時你有兩個方案:
第一種就是增加系統(tǒng)的硬件性能,進(jìn)行垂直擴(kuò)展,此時系統(tǒng)還是單體應(yīng)用;第二種方案就是再部署另外一臺機(jī)器,同樣也支持500QPS,這樣總體就能達(dá)到1000QPS的性能需求了。
方案二的系統(tǒng)也是一種分布式系統(tǒng),將本來可以部署一臺機(jī)器的應(yīng)用原樣復(fù)制一份到另外的機(jī)器上再部署一份。方案二中,部署的多臺應(yīng)用被也被稱為一個集群,可以說集群是分布式系統(tǒng)的一種。
再比如說,原本有一個系統(tǒng)中包含訂單服務(wù)、產(chǎn)品服務(wù)和支付等服務(wù),F(xiàn)在隨著業(yè)務(wù)的不斷復(fù)雜化,將訂單服務(wù)、產(chǎn)品服務(wù)和支付服務(wù)單獨(dú)分拆出來形成訂單系統(tǒng)、產(chǎn)品系統(tǒng)和支付系統(tǒng),交由專人負(fù)責(zé)。這種系統(tǒng)將原本的單體應(yīng)用分拆成多個系統(tǒng)部署到不同的機(jī)器上,也是分布式系統(tǒng),而且我們平時開發(fā)中所指的分布式系統(tǒng)大多是指這種系統(tǒng)。其實(shí)稍微有點(diǎn)分布式系統(tǒng)知識的同學(xué)可以看出來,這種系統(tǒng)就是最簡單的微服務(wù)系統(tǒng)。所以微服務(wù)也是分布式系統(tǒng)的一種。
分布式系統(tǒng)的優(yōu)勢
單體應(yīng)用的優(yōu)勢在于它的簡單,但是其劣勢也相當(dāng)明顯。一個就是容易出現(xiàn)單點(diǎn)故障,還有一個就是容易達(dá)到性能瓶頸。分布式系統(tǒng)很大程度上就是為了解決單體應(yīng)用上面的問題而出現(xiàn)的。
分布式系統(tǒng)將一些廉價的PC機(jī)通過網(wǎng)絡(luò)連接起來,共同完成工作,并且在系統(tǒng)中提供冗余來解決高可用的問題。分布式系統(tǒng)通過廉價的PC機(jī)減輕了企業(yè)購買大型機(jī)的高昂費(fèi)用,通過系統(tǒng)冗余又解決了HA的問題。
雖然分布式系統(tǒng)通過多工作節(jié)點(diǎn)解決了單體應(yīng)用面臨的高成本和可用性問題,但是它引入了對分布式系統(tǒng)內(nèi)部工作節(jié)點(diǎn)的協(xié)調(diào)問題。
分布式系統(tǒng)的挑戰(zhàn)
分布式系統(tǒng)的核心就是解決一個問題:對分布式系統(tǒng)內(nèi)部工作節(jié)點(diǎn)的協(xié)調(diào)問題。
看似簡單的問題會因網(wǎng)絡(luò)丟包、節(jié)點(diǎn)宕機(jī)恢復(fù)等場景變得異常復(fù)雜。由此才衍生出很多概念、協(xié)議和理論。為探究共識問題最大能解決的程度,于是有了CAP邊界理論;為在特定條件和范圍內(nèi)解決該問題,于是有一致性協(xié)議Paxos、Raft、Zab和ViewstampedReplication;為構(gòu)建這些協(xié)議,于是有多數(shù)派、Leader選舉、租約、邏輯時鐘等概念和方法。
又因?yàn)榉植际较到y(tǒng)分開部署的特點(diǎn),在具體實(shí)施開發(fā)過程中,我們又要解決:
1、分布式事務(wù)問題;
2、session共享問題;
3、分布式鎖問題;
4、全局時鐘問題;
還有一些列其他問題。雖然分布式系統(tǒng)解決了單體系統(tǒng)的單點(diǎn)故障和性能瓶頸問題,但同時也帶來了一系列“弊端”。但是技術(shù)就是這樣,沒有一個技術(shù)是完美的。我一直有個觀點(diǎn)就是:假如在一個領(lǐng)域中出現(xiàn)了一個完美的解決方案,那么在這個領(lǐng)域,人就不再有價值。分布式系統(tǒng)的復(fù)雜性給我們帶來了更多學(xué)習(xí)的空間,讓善于學(xué)習(xí)的程序員有更多發(fā)揮自身價值的機(jī)會。
以上文章由北京AAA教育課程顧問整理編輯發(fā)布,部分文章來自網(wǎng)絡(luò)內(nèi)容真實(shí)性請自行核實(shí)或聯(lián)系我們,了解相關(guān)專業(yè)課程信息您可在線咨詢也可免費(fèi)申請?jiān)囌n。關(guān)注官方微信了解更多:150 3333 6050