分布式與集群是一回事兒么?別讓這么簡(jiǎn)單的問(wèn)題難住你
集群和分布式,實(shí)際上是兩個(gè)截然不同的概念。
集群
一個(gè)業(yè)務(wù),部署在多臺(tái)服務(wù)器上,這就是集群。這里的一個(gè)業(yè)務(wù),可以直接看做一個(gè)程序包。
舉個(gè)例子
公司開(kāi)發(fā)了一個(gè)網(wǎng)上商城,類(lèi)似于T寶,顧客可以在上面瀏覽商品、加入購(gòu)物車(chē)、支付,完成整個(gè)的購(gòu)物流程。
公司買(mǎi)了一臺(tái)服務(wù)器,把這套程序部署上去,可以滿(mǎn)足一千個(gè)人同時(shí)在線購(gòu)物。
當(dāng)顧客越來(lái)越多,服務(wù)器負(fù)載越來(lái)越高,商城的頁(yè)面也越來(lái)越卡,這時(shí)候公司再買(mǎi)幾臺(tái)服務(wù)器,把商城的程序在每個(gè)服務(wù)器上都部署一套,由負(fù)載均衡將請(qǐng)求轉(zhuǎn)發(fā)到各個(gè)服務(wù)器上,這就是集群。

分布式
把一個(gè)業(yè)務(wù),拆分成多個(gè)業(yè)務(wù),然后部署到不同的服務(wù)器上,這就是分布式。
再舉個(gè)例子
公司的網(wǎng)上商城,拆分成兩個(gè)系統(tǒng):商品系統(tǒng)和支付系統(tǒng),用戶(hù)在商品系統(tǒng)上完成瀏覽商品、加入購(gòu)物車(chē)的動(dòng)作,在支付系統(tǒng)上完成支付動(dòng)作(當(dāng)然用戶(hù)是無(wú)法感知到是在兩個(gè)系統(tǒng)上完成的操作),這就是分布式。
當(dāng)然,還能繼續(xù)拆,例如拆出來(lái):用戶(hù)系統(tǒng)、積分系統(tǒng)、物流系統(tǒng)等等等等。

分布式的好處
領(lǐng)導(dǎo)說(shuō),我們?cè)僮鲆粋€(gè)二手交易平臺(tái),類(lèi)似于X魚(yú),這時(shí)候用戶(hù)系統(tǒng)、支付系統(tǒng)就可以復(fù)用了,做到了服務(wù)復(fù)用。
分布式 + 集群
分布式和集群通常是是結(jié)合在一起使用的;
比如商品系統(tǒng)部署兩臺(tái),支付系統(tǒng)部署兩臺(tái),前面各自?huà)熵?fù)載均衡,這樣就算有單個(gè)服務(wù)器 Down 掉,也不會(huì)對(duì)整個(gè)業(yè)務(wù)流程造成影響。

還有另外一種方案,可以不依賴(lài)于負(fù)載均衡,那就是采用 服務(wù)注冊(cè)/發(fā)現(xiàn) 的方式:

總之,集群部署很容易實(shí)現(xiàn),當(dāng)單機(jī)不能滿(mǎn)足業(yè)務(wù)需要時(shí),可以采用集群部署,至于要不要做分布式,業(yè)務(wù)拆分到什么粒度,就要結(jié)合公司的實(shí)際情況來(lái)決定了。