服務器端負載均衡和客戶端負載均衡的區別?

服務器端負載均衡:例如Nginx,通過Nginx進行負載均衡,先發送請求,然後通過負載均衡算法,在多個服務器之間選擇一個進行訪問;即在服務器端再進行負載均衡算法分配。

負載均衡是我們處理高併發、緩解網絡壓力和進行服務端擴容的重要手段之一,但是一般情況下我們所說的負載均衡通常都是指服務端負載均衡,服務端負載均衡又分爲兩種,一種是硬件負載均衡,還有一種是軟件負載均衡。

硬件負載均衡主要通過在服務器節點之間安裝專門用於負載均衡的設備,常見的如F5。

軟件負載均衡則主要是在服務器上安裝一些具有負載均衡功能的軟件來完成請求分發進而實現負載均衡,常見的就是Nginx。

無論是硬件負載均衡還是軟件負載均衡,它的工作原理都不外乎下面這張圖:

 

客戶端負載均衡:例如spring cloud中的ribbon,客戶端會有一個服務器地址列表,在發送請求前通過負載均衡算法選擇一個服務器,然後進行訪問,這是客戶端負載均衡;即在客戶端就進行負載均衡算法分配。

Ribbo是一個基於HTTP和TCP的客戶端負載均衡器,當我們將Ribbon和Eureka一起使用時,Ribbon會從Eureka註冊中心去獲取服務端列表,然後進行輪詢訪問以到達負載均衡的作用,客戶端負載均衡中也需要心跳機制去維護服務端清單的有效性,當然這個過程需要配合服務註冊中心一起完成

從上面的描述我們可以看出,客戶端負載均衡和服務端負載均衡最大的區別在於服務清單所存儲的位置。在客戶端負載均衡中,所有的客戶端節點都有一份自己要訪問的服務端清單,這些清單統統都是從Eureka服務註冊中心獲取的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章