客户端负载均衡介绍
客戶端負載均衡
客戶端負載均衡,就是相對服務端負載均衡而言的。
服務端負載均衡,就是傳統的 Nginx 的方式。用 Nginx 做負載均衡,我們稱之為服務端負載均衡。
如下圖所示:
這種均衡,稱為服務端負載均衡。它的一個特點就是,客戶端并不知道此時為它提供服務的 server 到底是哪一個,它也不關心。反正請求發給 Nginx,Nginx 再將請求轉發給 Tomcat,客戶端只需要記住 Nginx 的地址即可。
客戶端負載均衡則是另外一種情形:
客戶端負載均衡,就是調用的客戶端本身是知道所有 Server 的詳細信息的,當需要調用 Server 上的接口時,客戶端就從自身所維護的 Server 列表中,根據提前配置好的負載均衡策略,自己挑選一個 Server 來調用。此時,客戶端知道它所調用的 Server 到底是哪一個。
在 RestTemplate 中,要想使用負載均衡功能,只需要給 RestTemplate 實例上添加一個 @LoadBalanced 注解即可,此時,RestTemplate 就會自動具備負載均衡功能,這個負載均衡就是客戶端負載均衡。
@Bean
// 給 RestTemplate 實例添加 @LoadBalanced 注解,自動開啟負載均衡
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
負載均衡原理
在 Spring Cloud 中,實現負載均衡非常容易。只需要添加 @LoadBalanced 注解即可。只要添加了該注解,一個原本普通做 Rest 請求的工具 RestTemplate 就會自動具備負載均衡功能,這個是怎么實現的呢?
整體上來說,這個功能的實現就是三個核心點:
-從 Eureka Client 本地緩存的服務注冊信息中,選擇一個可以調用的服務。
根據 1 中所選擇的服務,重構請求 URL 地址。
將 1、2 步的功能嵌入到 RestTemplate 中。
每天學習一點點,每天進步一點點。
總結
- 上一篇: linux安装手动划分目录,Linux目
- 下一篇: 真我GT Neo5把1TB存储干成“白菜