客户端负载均衡介绍
客戶端負(fù)載均衡
客戶端負(fù)載均衡,就是相對(duì)服務(wù)端負(fù)載均衡而言的。
服務(wù)端負(fù)載均衡,就是傳統(tǒng)的 Nginx 的方式。用 Nginx 做負(fù)載均衡,我們稱之為服務(wù)端負(fù)載均衡。
如下圖所示:
這種均衡,稱為服務(wù)端負(fù)載均衡。它的一個(gè)特點(diǎn)就是,客戶端并不知道此時(shí)為它提供服務(wù)的 server 到底是哪一個(gè),它也不關(guān)心。反正請(qǐng)求發(fā)給 Nginx,Nginx 再將請(qǐng)求轉(zhuǎn)發(fā)給 Tomcat,客戶端只需要記住 Nginx 的地址即可。
客戶端負(fù)載均衡則是另外一種情形:
客戶端負(fù)載均衡,就是調(diào)用的客戶端本身是知道所有 Server 的詳細(xì)信息的,當(dāng)需要調(diào)用 Server 上的接口時(shí),客戶端就從自身所維護(hù)的 Server 列表中,根據(jù)提前配置好的負(fù)載均衡策略,自己挑選一個(gè) Server 來(lái)調(diào)用。此時(shí),客戶端知道它所調(diào)用的 Server 到底是哪一個(gè)。
在 RestTemplate 中,要想使用負(fù)載均衡功能,只需要給 RestTemplate 實(shí)例上添加一個(gè) @LoadBalanced 注解即可,此時(shí),RestTemplate 就會(huì)自動(dòng)具備負(fù)載均衡功能,這個(gè)負(fù)載均衡就是客戶端負(fù)載均衡。
@Bean
// 給 RestTemplate 實(shí)例添加 @LoadBalanced 注解,自動(dòng)開(kāi)啟負(fù)載均衡
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
負(fù)載均衡原理
在 Spring Cloud 中,實(shí)現(xiàn)負(fù)載均衡非常容易。只需要添加 @LoadBalanced 注解即可。只要添加了該注解,一個(gè)原本普通做 Rest 請(qǐng)求的工具 RestTemplate 就會(huì)自動(dòng)具備負(fù)載均衡功能,這個(gè)是怎么實(shí)現(xiàn)的呢?
整體上來(lái)說(shuō),這個(gè)功能的實(shí)現(xiàn)就是三個(gè)核心點(diǎn):
-從 Eureka Client 本地緩存的服務(wù)注冊(cè)信息中,選擇一個(gè)可以調(diào)用的服務(wù)。
根據(jù) 1 中所選擇的服務(wù),重構(gòu)請(qǐng)求 URL 地址。
將 1、2 步的功能嵌入到 RestTemplate 中。
每天學(xué)習(xí)一點(diǎn)點(diǎn),每天進(jìn)步一點(diǎn)點(diǎn)。
總結(jié)
- 上一篇: linux安装手动划分目录,Linux目
- 下一篇: linux++命令+q,linux 命令