1. 程式人生 > >分布式與集群

分布式與集群

做的 就是 思路 以及 left 運行 集群 處理 top

Technorati 標簽: 分布式,負載均衡,科普

本文整理自分布式與集群

分布式

有3個系統,他們所做的業務不同,被部署在獨立的機器上運行。
這三個系統之間可以互相調用,一起來完成公司的業務流程。

那麽什麽是分布式系統呢?將不同的業務分布在不同的地方就構成了分布式系統。
如下圖所示,client只通過系統A訪問整個分布式系統,所以如果用戶量大的時候,有可以掛掉,這就是單點失敗

技術分享圖片

集群Cluster

既然系統A有可能因為訪問量大出現無法處理的情況,那就多用幾臺主機對外提供服務。

下圖所示為系統A部署了3份,每一份都是系統A的實例。但是每臺主機都有自己的IP地址,到底訪問哪一個呢?如果只訪問一個,除了可靠性得到提升,實際上性能上沒有大的改變。

這種模式也可以理解為“一人幹活,多人圍觀”

**總結一下集群就是將相同服務部署在多臺服務器上構成一個集群整體對外提供服務,
**
技術分享圖片

負載均衡(Load Balancer)

負載均衡就是讓3臺主機上的工作均衡一點,每臺主機都幫忙分擔一點,而不是讓一臺主機全部扛起來。

而且這個負載均衡的工作,最好獨立出來,放到獨立的服務器或者設備上(比如Nginx),但是負載均衡的單點故障也來了,所以至少把負載均衡也搞成一個集群。
技術分享圖片

不過負載均衡的集群與系統A的業務集群有不同:

  • 負載均衡集群雖然有兩臺機器,但是對外只呈現一個IP,也就是用戶仿佛只看到一臺機器。
  • 同一時刻,只讓一臺負載均衡工作,另一臺只在工作的機器出現故障以後才切換過去。
    這種方式又稱為HA

彈性

主要適用於有業務峰值的場景,比如雙十一,用戶量是平時的若幹倍,但是只要雙十一一過,就不需要這麽多服務器呢。為了節省成本,可以不使用物理服務器,而是通過虛擬機的方式,在原有的物理機上加一層軟件邏輯層,可以抽象出虛擬的服務器,在其上可以安裝操作系統以及應用系統。

這樣可以在雲端進行虛擬機的創建了,雙十一以後把虛擬服務器關掉即可。

於是這套系統有了彈性。

失效轉移

上面的系統看上去美好,但是做了一個假設服務其實是無狀態的,也就是說用戶兩次請求沒有關系

比如用戶訪問系統,在服務器A上創建了一個購物車,加入了商品,然後服務器A就掛了,此時其他服務器會去接管用戶的訪問,這就是失效轉移

但是其他服務器上並沒有購物車信息,那麽用戶就會發現原來的購物車裏面的東西沒有了。用戶體驗相當不好。所以集群一定要處理好狀態的轉移

一般來說有兩種思路share-nothing和共享存儲

  • 共享存儲,也就是有一個公有的地方,可以把狀態信息集中存儲,各個服務器都可以訪問。比如Redis服務器
    技術分享圖片
  • share-nothing,也就是不使用共享存儲,可以由Websphere,Weblogic這樣的應用服務器將狀態信息同步到其他的服務器上,保持集群服務器上狀態信息一致就可以了。

分布式與集群的區別

分布式是將不同的業務部署在不同的地方,而集群是將幾臺服務器集中在一起完成同一業務。
分布式的每一個節點都可以做集群,集群不一定就是分布式。

總之,一個分布式系統是由多個節點組成,各節點可能是集群化的,而且各集群還是分布式的。

分布式與集群