經(jīng)常聽到MySql集群、Redis集群、分布式系統(tǒng)等概念,但是,很少有機會深究,到底什么集群,什么是分布式?在概念上這倆個詞很接近,難道不需要區(qū)分?其實,非常有必要區(qū)分這兩個概念,幫助我們對計算機的理論有更深入的理解。今天,我就嘗試去解釋一下這兩個概念。
定義的區(qū)別
計算機集群(英語:computer cluster)是一組松散或緊密連接在一起工作的計算機。由于這些計算機協(xié)同工作,在許多方面它們可以被視為單個系統(tǒng)。與網(wǎng)格計算機不同,計算機集群將每個節(jié)點設(shè)置為執(zhí)行相同的任務(wù),由軟件控制和調(diào)度。
維基百科的解釋,關(guān)鍵詞是:一組計算機、相同的任務(wù)。
分布式系統(tǒng)是一組電腦,透過網(wǎng)絡(luò)相互連接傳遞消息與通信后并協(xié)調(diào)它們的行為而形成的系統(tǒng)。[1]組件之間彼此進行交互以實現(xiàn)一個共同的目標(biāo)。把需要進行大量計算的工程數(shù)據(jù)分割成小塊,由多臺計算機分別計算,再上傳運算結(jié)果后,將結(jié)果統(tǒng)一合并得出數(shù)據(jù)結(jié)論的科學(xué)。
維基百科的解釋,關(guān)鍵詞是:一組計算機、大計算分解。
集群和分布式,都是描述的一組計算機。集群的所有節(jié)點跑的是同樣的任務(wù),而分布式系統(tǒng)的節(jié)點跑的是分解后的任務(wù)。以修手機為例:維修一部手機要分為檢測、維修、測試三個環(huán)節(jié),為了提高效率,雇了10位工程師。如果每個工程師維修時,對每臺手機進行檢測、維修和測試,這就是集群的工作方式。如果2位工程師負(fù)責(zé)檢測,5位工程師負(fù)責(zé)維修,剩下的3位工程師負(fù)責(zé)測試,這就是分布式的工作方式。
應(yīng)用中的區(qū)別
在工作中,有時候并沒有嚴(yán)格按照概念去理解這兩個詞。但是,回想一下什么時候用集群這個詞,Redis集群、MySql集群、Nginx集群等等,按照上述的定義分析,這些集群里的每個節(jié)點,都是跑的同樣的業(yè)務(wù)。微服務(wù)平臺、云計算平臺,這些平臺的節(jié)點往往跑著不同的業(yè)務(wù),組成強大的能力對外提供服務(wù),這就是分布式系統(tǒng)。
集群的關(guān)鍵作用是提升并發(fā)處理能力。例如:一臺MySql數(shù)據(jù)庫不能滿足性能需求,通過分表分庫方案,部署多臺實例;一個Redis節(jié)點不足以支撐業(yè)務(wù),多個節(jié)點組成集群提高并發(fā)處理能力。但凡能夠組成集群的,往往都是職責(zé)單一,功能目標(biāo)明確的應(yīng)用。相對來說,集群化是簡單的,對服務(wù)幾乎無侵入的,通過入口分發(fā)負(fù)載,應(yīng)用與應(yīng)用之間是等價的、無感知的。
分布式的關(guān)鍵作用是解耦以便于快速迭代。單機版應(yīng)用能不能做的很強大、很復(fù)雜?當(dāng)然可以!十幾年前的SAP、Oracle ERP軟件,這些業(yè)務(wù)巨復(fù)雜的系統(tǒng),都是可以部署在一臺服務(wù)器上的。通過模塊化、SOA等設(shè)計理念,工程師們也可以協(xié)同工作寫出復(fù)雜的應(yīng)用。這些軟件可能一年才需要升級一次,但互聯(lián)網(wǎng)應(yīng)用幾乎每周都在發(fā)版升級,顯然這種開發(fā)模式在互聯(lián)網(wǎng)領(lǐng)域并不適用。通過把功能模塊拆分出來,部署在不同的節(jié)點,按節(jié)點進行升級,實現(xiàn)快速迭代。
通過上面的講述,這種理論模型的分布式,和真實的分布式還是不同。沒有誰見過分布式系統(tǒng)中的業(yè)務(wù)模塊,是單節(jié)點部署的。是的,沒有錯,現(xiàn)實中的分布式系統(tǒng),其實是分布式+集群的綜合體。這樣的模式,結(jié)合了兩者的優(yōu)勢,即實現(xiàn)了解耦,又做到了高并發(fā)能力,完美呼應(yīng)了互聯(lián)網(wǎng)對應(yīng)用的需求。其他的概念,高可用、一致性等,都是在分布式+集群的理念上,發(fā)展出來的解決具體問題的方法論。
總結(jié)
本文從概念入手,“性格分裂”式的剖析了集群和分布式。我認(rèn)為,這種剖析有利于理解概念,有利于理解“為什么”。在具體實踐中,不能把兩者對立起來,復(fù)雜的業(yè)務(wù)系統(tǒng),往往都是兩者的結(jié)合體。
針對我的理解,你有什么想說的嗎?歡迎拍磚。
-
集群
+關(guān)注
關(guān)注
0文章
85瀏覽量
17168 -
分布式
+關(guān)注
關(guān)注
1文章
879瀏覽量
74466
發(fā)布評論請先 登錄
相關(guān)推薦
評論