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