什麼是客戶端負載均衡

咱們以前有一篇文章詳述瞭如何使用nginx實現負載均衡(Nginx+Tomcat搭建集羣,Spring Session+Redis實現Session共享),在這篇文章中,咱們實現瞭如何將客戶端發來的請求經過Nginx負載均衡服務器發送到不一樣的上游服務器去處理,這種負載均衡就是一種典型的服務端負載均衡,那麼客戶端負載均衡是什麼?它和服務端負載均衡有什麼區別?nginx


本文是Spring Cloud系列的第五篇文章,瞭解前四篇文章的內容有助於更好的理解本文: 服務器

1.使用Spring Cloud搭建服務註冊中心
2.使用Spring Cloud搭建高可用服務註冊中心
3.Spring Cloud中服務的發現與消費
4.Eureka中的核心概念網絡


服務端負載均衡

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

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

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

不管是硬件負載均衡仍是軟件負載均衡,它的工做原理都不外乎下面這張圖: spa

圖片描述

不管是硬件負載均衡仍是軟件負載均衡都會維護一個可用的服務端清單,而後經過心跳機制來刪除故障的服務端節點以保證清單中都是能夠正常訪問的服務端節點,此時當客戶端的請求到達負載均衡服務器時,負載均衡服務器按照某種配置好的規則從可用服務端清單中選出一臺服務器去處理客戶端的請求。這就是服務端負載均衡。code

客戶端負載均衡

咱們在Spring Cloud中服務的發現與消費一文中涉及到了客戶端負載均衡,在那篇文章中咱們提到圖片

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

從上面的描述咱們能夠看出,客戶端負載均衡和服務端負載均衡最大的區別在於服務清單所存儲的位置。在客戶端負載均衡中,全部的客戶端節點都有一份本身要訪問的服務端清單,這些清單通通都是從Eureka服務註冊中心獲取的。在Spring Cloud中咱們若是想要使用客戶端負載均衡,方法很簡單,開啓@LoadBalanced註解便可,這樣客戶端在發起請求的時候會先自行選擇一個服務端,向該服務端發起請求,從而實現負載均衡。具體小夥伴們能夠參考Spring Cloud中服務的發現與消費這篇文章。

OK,以上就是咱們對客戶端負載均衡的一個簡介,有問題歡迎留言討論。

更多JavaEE請關注公衆號:

圖片描述

以上。。

相關文章
相關標籤/搜索