集群和分布式,實際上是兩個截然不同的概念。
集群
一個業務,部署在多臺伺服器上,這就是集群。這裡的一個業務,可以直接看作一個程序包。
舉個例子
公司開發了一個網上商城,類似於T寶,顧客可以在上面瀏覽商品、加入購物車、支付,完成整個的購物流程。
公司買了一臺伺服器,把這套程序部署上去,可以滿足一千個人同時在線購物。
當顧客越來越多,伺服器負載越來越高,商城的頁面也越來越卡,這時候公司再買幾臺伺服器,把商城的程序在每個伺服器上都部署一套,由負載均衡將請求轉發到各個伺服器上,這就是集群。
分布式
把一個業務,拆分成多個業務,然後部署到不同的伺服器上,這就是分布式。
再舉個例子
公司的網上商城,拆分成兩個系統:商品系統和支付系統,用戶在商品系統上完成瀏覽商品、加入購物車的動作,在支付系統上完成支付動作(當然用戶是無法感知到是在兩個系統上完成的操作),這就是分布式。
當然,還能繼續拆,例如拆出來:用戶系統、積分系統、物流系統等等等等。
分布式的好處
領導說,我們再做一個二手交易平臺,類似於X魚,這時候用戶系統、支付系統就可以復用了,做到了服務復用。
分布式 + 集群
分布式和集群通常是是結合在一起使用的;
比如商品系統部署兩臺,支付系統部署兩臺,前面各自掛負載均衡,這樣就算有單個伺服器 Down 掉,也不會對整個業務流程造成影響。
還有另外一種方案,可以不依賴於負載均衡,那就是採用 服務註冊/發現 的方式:
總之,集群部署很容易實現,當單機不能滿足業務需要時,可以採用集群部署,至於要不要做分布式,業務拆分到什麼粒度,就要結合公司的實際情況來決定了。
我將持續分享Java開發、架構設計、程式設計師職業發展等方面的見解,希望能得到你的關注;關注我後,可私信發送數字【1】,獲取學習資料。