作用
對系統的高可用,網絡壓力的緩解,處理能力擴容的重要手段之一。
服務器負載
我們通常所說的負載是指:服務器負載
軟硬件負載
服務器負載又分為:軟件負載--硬件負載
軟件負載:通過在服務器上安裝一些具有負載功能或模塊的軟件來完成分發工作,如Nginx
硬件負載:通過在服務器節點之間安裝專門用于負載的設備,如F5
架構
不論是軟件負載還是硬件負載,主要是服務器負載都能以類似下圖的方式的架構搭建:
硬件負載的設備,軟件負載的軟件模塊都會維護一個下掛可用的服務端清單;通過心跳檢測來剔除故障的服務端節點,來保證清單中都是可以正常訪問的服務端節點;當服務端發送請求到負載設備時,該設備會以某種算法(如:線性輪詢,按權重負載,按流量負載等)從服務端清單中取出一臺服務端的地址,然后進行轉發。
客戶端負載
與服務器負載最大不同就是服務清單所提供的位置。在客戶端負載中,所有客戶端節點都維護著自己要訪問的服務端清單,而這些服務端清單來自于服務注冊中心(如:Eureka)。客戶端的負載也需要心跳去維護服務端清單的健康性,只是需要與服務注冊中心配合完成。