叢集,負載均衡和分散式,雖然是不同的概念,但是彼此之間又有聯絡。
叢集是指有多臺伺服器,它們做著相同的事情,提供相同的服務區,在呼叫方看來只有一個伺服器對外提供服務,這些伺服器組合起來就叫做叢集。
我們以程式碼為例:
最早的時候,我們的業務都寫在一個專案中,比如我們做一個網上商城的專案,客戶註冊、商品瀏覽及下單、支付、物流全部都在同一個專案中。
但是隨著使用者的不斷增多,一臺伺服器已經不能滿足這麼大訪問量的時候,我們可以將這個專案部署在多臺伺服器上,這樣就可以讓跟多的使用者訪問我們的網站。
雖然這樣看起來,我們網站的負載能力更強了,可以讓更多的使用者訪問我們的網站,但是有另外一個問題,就是網站(服務)的入口會有多個,你不可能要求使用者能記住你所有伺服器的 IP,也不可能申請多個域名掛在不同的伺服器上,這時候就需要用到負載均衡了。
負載均衡可以把使用者的請求分發到後端的伺服器上,就像這樣:
這樣就變成了統一的入口,然後再做二次分發,將流量按照一定的規則傳送到後端的每臺伺服器上,這個過程就是負載均衡。
負載均衡有硬體的實現方式,比如 F5,這是一臺硬體裝置,也有軟體的實現方式,比如 Nginx、LVS 等等;
負載均衡策略也有很多,比如輪詢法、隨機法、隨機輪詢法、源地址雜湊法、最小連線數法、最快響應速度法等等;
另外,在微服務架構中,還有一個概念是“客戶端負載均衡”,也就是客戶端儲存著每臺伺服器的地址,由客戶端自己決定去訪問哪臺伺服器。客戶端的負載均衡,通常是要和服務註冊發現配合使用的。
如果所有的程式碼都寫在同一個程式碼包中,隨著需求的增多、業務越來越複雜,這個程式碼包可能會變得越來越大,越來越難維護;以前三五個開發人員就能維護一個專案,現在是三五百個開發人員一起合作開發;功能模組都在一起,一個功能要升級,整個專案就要跟著一起升級;當我們要做另外一個專案的時候,有一些功能就要重複開發...由於以上種種問題,需要我們將專案進行服務化,分散式部署。
叢集是多臺伺服器,每臺伺服器幹相同的事情,那麼分散式就是多臺機器,每臺伺服器做不同的事情,它們彼此配合完成工作。
當然不是說使用了分散式之後,就不需要負載均衡了,通常兩者是配合使用的。
叢集,負載均衡和分散式,雖然是不同的概念,但是彼此之間又有聯絡。
01. 叢集叢集是指有多臺伺服器,它們做著相同的事情,提供相同的服務區,在呼叫方看來只有一個伺服器對外提供服務,這些伺服器組合起來就叫做叢集。
我們以程式碼為例:
最早的時候,我們的業務都寫在一個專案中,比如我們做一個網上商城的專案,客戶註冊、商品瀏覽及下單、支付、物流全部都在同一個專案中。
但是隨著使用者的不斷增多,一臺伺服器已經不能滿足這麼大訪問量的時候,我們可以將這個專案部署在多臺伺服器上,這樣就可以讓跟多的使用者訪問我們的網站。
雖然這樣看起來,我們網站的負載能力更強了,可以讓更多的使用者訪問我們的網站,但是有另外一個問題,就是網站(服務)的入口會有多個,你不可能要求使用者能記住你所有伺服器的 IP,也不可能申請多個域名掛在不同的伺服器上,這時候就需要用到負載均衡了。
02. 負載均衡負載均衡可以把使用者的請求分發到後端的伺服器上,就像這樣:
這樣就變成了統一的入口,然後再做二次分發,將流量按照一定的規則傳送到後端的每臺伺服器上,這個過程就是負載均衡。
負載均衡有硬體的實現方式,比如 F5,這是一臺硬體裝置,也有軟體的實現方式,比如 Nginx、LVS 等等;
負載均衡策略也有很多,比如輪詢法、隨機法、隨機輪詢法、源地址雜湊法、最小連線數法、最快響應速度法等等;
另外,在微服務架構中,還有一個概念是“客戶端負載均衡”,也就是客戶端儲存著每臺伺服器的地址,由客戶端自己決定去訪問哪臺伺服器。客戶端的負載均衡,通常是要和服務註冊發現配合使用的。
03. 分散式如果所有的程式碼都寫在同一個程式碼包中,隨著需求的增多、業務越來越複雜,這個程式碼包可能會變得越來越大,越來越難維護;以前三五個開發人員就能維護一個專案,現在是三五百個開發人員一起合作開發;功能模組都在一起,一個功能要升級,整個專案就要跟著一起升級;當我們要做另外一個專案的時候,有一些功能就要重複開發...由於以上種種問題,需要我們將專案進行服務化,分散式部署。
叢集是多臺伺服器,每臺伺服器幹相同的事情,那麼分散式就是多臺機器,每臺伺服器做不同的事情,它們彼此配合完成工作。
當然不是說使用了分散式之後,就不需要負載均衡了,通常兩者是配合使用的。