我們之前有一篇文章詳述了如何使用nginx實現負載均衡(nginx+tomcat搭建集群,spring session+redis實現session共享),在這篇文章中,我們實現了如何將客戶端發來的請求通過nginx負載均衡伺服器傳送到不同的上游伺服器去處理,這種負載均衡就是一種典型的服務端負載均衡,那麼客戶端負載均衡是什麼?它和服務端負載均衡有什麼區別?
1.使用spring cloud搭建服務註冊中心
2.使用spring cloud搭建高可用服務註冊中心
3.spring cloud中服務的發現與消費
4.eureka中的核心概念
負載均衡是我們處理高併發、緩解網路壓力和進行服務端擴容的重要手段之一,但是一般情況下我們所說的負載均衡通常都是指服務端負載均衡,服務端負載均衡又分為兩種,一種是硬體負載均衡,還有一種是軟體負載均衡。
硬體負載均衡主要通過在伺服器節點之間安裝專門用於負載均衡的裝置,常見的如f5。
軟體負載均衡則主要是在伺服器上安裝一些具有負載均衡功能的軟體來完成請求分發進而實現負載均衡,常見的就是nginx。
無論是硬體負載均衡還是軟體負載均衡,它的工作原理都不外乎下面這張圖:
無論是硬體負載均衡還是軟體負載均衡都會維護乙個可用的服務端清單,然後通過心跳機制來刪除故障的服務端節點以保證清單中都是可以正常訪問的服務端節點,此時當客戶端的請求到達負載均衡伺服器時,負載均衡伺服器按照某種配置好的規則從可用服務端清單中選出一台伺服器去處理客戶端的請求。這就是服務端負載均衡。
我們在spring cloud中服務的發現與消費一文中涉及到了客戶端負載均衡,在那篇文章中我們提到
「ribbo是乙個基於http和tcp的客戶端負載均衡器,當我們將ribbon和eureka一起使用時,ribbon會從eureka註冊中心去獲取服務端列表,然後進行輪詢訪問以到達負載均衡的作用,客戶端負載均衡中也需要心跳機制去維護服務端清單的有效性,當然這個過程需要配合服務註冊中心一起完成。」從上面的描述我們可以看出,客戶端負載均衡和服務端負載均衡最大的區別在於服務清單所儲存的位置。在客戶端負載均衡中,所有的客戶端節點都有乙份自己要訪問的服務端清單,這些清單統統都是從eureka服務註冊中心獲取的。在spring cloud中我們如果想要使用客戶端負載均衡,方法很簡單,開啟
@loadbalanced
註解即可,這樣客戶端在發起請求的時候會先自行選擇乙個服務端,向該服務端發起請求,從而實現負載均衡。具體小夥伴們可以參考spring cloud中服務的發現與消費這篇文章。
以上。。
客戶端負載均衡
客戶端負載均衡就是服務端負載均衡而言的。服務端負載均衡 就是傳統的nginx的方式,用nginx做負載均衡,我們稱之為服務端負載均衡。這種負載均衡,我們稱為伺服器負載均衡,它的特點是,就是呼叫的客戶端不知道具體是哪乙個server提供的服務,他也不關心,反正請求傳送給nginx,nginx再將請求 ...
ribbon客戶端負載均衡
ribbon會儲存註冊中心應用,然後定時去更新,而不是每次都要先訪問註冊中心,再訪問應用 依賴org.springframework.cloud spring cloud starter netflix ribbon 複製 配置resttemplate bean是乙個方法級別上的註解,主要用在 co...
客戶端負載均衡 Ribbon
1.集群user server c v 改東西 user server pom.xml user server 3001artifactid user server 3001name parent pm.xml user server 3001module eureka client service...