咨詢熱線 400-001-5729

什么是分布式系統(tǒng)

發(fā)布時間:2021-11-12 14:20:49

分布式系統(tǒng)培訓

       到底什么才是分布式系統(tǒng)?看了很多文章,感覺很少有文章能把這個概念解釋的既簡單,又清楚的。結合這自己的理解,我對分布式系統(tǒng)的概念做了下面的總結。

        關于分布式系統(tǒng)的定義問題,我傾向從字面上來解釋:分開部署的系統(tǒng)就可以稱為分布式系統(tǒng)。比如,一個系統(tǒng)原本由前端頁面、后臺服務和后端數(shù)據(jù)庫組成,將這些服務全都部署在一臺機器上,這種應用叫單體應用,F(xiàn)在我們將數(shù)據(jù)庫拿出來,單獨部署到另外一臺機器上,后端服務和數(shù)據(jù)庫之間通過網(wǎng)絡通信,這種部署方式就是一種最簡單的分布式系統(tǒng)。

        再比如說,原本有一個后端服務,能支持500QPS的并發(fā)請求,F(xiàn)在業(yè)務量上升,需要能支持1000QPS的并發(fā)量。此時你有兩個方案:

        第一種就是增加系統(tǒng)的硬件性能,進行垂直擴展,此時系統(tǒng)還是單體應用;第二種方案就是再部署另外一臺機器,同樣也支持500QPS,這樣總體就能達到1000QPS的性能需求了。

         方案二的系統(tǒng)也是一種分布式系統(tǒng),將本來可以部署一臺機器的應用原樣復制一份到另外的機器上再部署一份。方案二中,部署的多臺應用被也被稱為一個集群,可以說集群是分布式系統(tǒng)的一種。

          再比如說,原本有一個系統(tǒng)中包含訂單服務、產(chǎn)品服務和支付等服務,F(xiàn)在隨著業(yè)務的不斷復雜化,將訂單服務、產(chǎn)品服務和支付服務單獨分拆出來形成訂單系統(tǒng)、產(chǎn)品系統(tǒng)和支付系統(tǒng),交由專人負責。這種系統(tǒng)將原本的單體應用分拆成多個系統(tǒng)部署到不同的機器上,也是分布式系統(tǒng),而且我們平時開發(fā)中所指的分布式系統(tǒng)大多是指這種系統(tǒng)。其實稍微有點分布式系統(tǒng)知識的同學可以看出來,這種系統(tǒng)就是最簡單的微服務系統(tǒng)。所以微服務也是分布式系統(tǒng)的一種。

分布式系統(tǒng)的優(yōu)勢

        單體應用的優(yōu)勢在于它的簡單,但是其劣勢也相當明顯。一個就是容易出現(xiàn)單點故障,還有一個就是容易達到性能瓶頸。分布式系統(tǒng)很大程度上就是為了解決單體應用上面的問題而出現(xiàn)的。

分布式系統(tǒng)將一些廉價的PC機通過網(wǎng)絡連接起來,共同完成工作,并且在系統(tǒng)中提供冗余來解決高可用的問題。分布式系統(tǒng)通過廉價的PC機減輕了企業(yè)購買大型機的高昂費用,通過系統(tǒng)冗余又解決了HA的問題。

        雖然分布式系統(tǒng)通過多工作節(jié)點解決了單體應用面臨的高成本和可用性問題,但是它引入了對分布式系統(tǒng)內部工作節(jié)點的協(xié)調問題。

分布式系統(tǒng)的挑戰(zhàn)

       分布式系統(tǒng)的核心就是解決一個問題:對分布式系統(tǒng)內部工作節(jié)點的協(xié)調問題。

        看似簡單的問題會因網(wǎng)絡丟包、節(jié)點宕機恢復等場景變得異常復雜。由此才衍生出很多概念、協(xié)議和理論。為探究共識問題最大能解決的程度,于是有了CAP邊界理論;為在特定條件和范圍內解決該問題,于是有一致性協(xié)議Paxos、Raft、Zab和ViewstampedReplication;為構建這些協(xié)議,于是有多數(shù)派、Leader選舉、租約、邏輯時鐘等概念和方法。

        又因為分布式系統(tǒng)分開部署的特點,在具體實施開發(fā)過程中,我們又要解決:

1、分布式事務問題;

2、session共享問題;

3、分布式鎖問題;

4、全局時鐘問題;

         還有一些列其他問題。雖然分布式系統(tǒng)解決了單體系統(tǒng)的單點故障和性能瓶頸問題,但同時也帶來了一系列“弊端”。但是技術就是這樣,沒有一個技術是完美的。我一直有個觀點就是:假如在一個領域中出現(xiàn)了一個完美的解決方案,那么在這個領域,人就不再有價值。分布式系統(tǒng)的復雜性給我們帶來了更多學習的空間,讓善于學習的程序員有更多發(fā)揮自身價值的機會。

         本文由培訓無憂網(wǎng)長沙牛耳教育專屬課程顧問整理發(fā)布,希望能夠對想?yún)⒓娱L沙Java培訓班的學生有所幫助。更多Java培訓課程資訊歡迎關注培訓無憂網(wǎng)Java培訓頻道或添加老師微信:1503333605010

以上文章由長沙牛耳教育課程顧問整理編輯發(fā)布,部分文章來自網(wǎng)絡內容真實性請自行核實或聯(lián)系我們,了解相關專業(yè)課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050

免 費 申 請 試 課