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