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