Spring?Cloud?Alibaba負(fù)載均衡實(shí)現(xiàn)方式
一、負(fù)載均衡的兩種方式
服務(wù)器端負(fù)載均衡
傳統(tǒng)的方式前端發(fā)送請(qǐng)求會(huì)到我們的的nginx上去,nginx作為反向代理,然后路由給后端的服務(wù)器,由于負(fù)載均衡算法是nginx提供的,而nginx是部署到服務(wù)器端的,所以這種方式又被稱為服務(wù)器端負(fù)載均衡。

客戶端側(cè)負(fù)載均衡
現(xiàn)在有三個(gè)實(shí)例,內(nèi)容中心可以通過(guò)discoveryClient 獲取到用戶中心的實(shí)例信息,如果我們?cè)儆唵沃行膶?xiě)一個(gè)負(fù)載均衡的規(guī)則計(jì)算請(qǐng)求那個(gè)實(shí)例,交給restTemplate進(jìn)行請(qǐng)求,這樣也可以實(shí)現(xiàn)負(fù)載均衡,這個(gè)算法里面,負(fù)載均衡是有訂單中心提供的,而訂單中心相對(duì)于用戶中心是一個(gè)客戶端,所以這種方式又稱為客戶端負(fù)負(fù)載均衡。

二、手寫(xiě)一個(gè)客戶端側(cè)負(fù)載均衡器
◆隨機(jī)選擇實(shí)例
@Autowired
private DiscoveryClient discoveryClient;
@GetMapping("/order/create")
public String createOrder(Integer productId,Integer userId){
List<ServiceInstance> instances = discoveryClient.getInstances("msb-stock");
List<String> targetUrls = instances.stream()
// 數(shù)據(jù)變換
.map(instance -> instance.getUri().toString() + "/stock/reduce")
.collect(Collectors.toList());
int i = ThreadLocalRandom.current().nextInt(targetUrls.size());
String targetUrl = targetUrls.get(i);
log.info("請(qǐng)求求目標(biāo)地址:{}",targetUrl);
String result = restTemplate.getForObject(targetUrl +"/"+ productId, String.class);
log.info("進(jìn)行減庫(kù)存:{}",result);
return "下單成功";
}
三、使用Ribbon實(shí)現(xiàn)負(fù)載均衡
Ribbon是什么? Netflix開(kāi)源的客戶端側(cè)負(fù)載均衡器
更加直觀說(shuō)就是ribbon就是簡(jiǎn)化我們這段代碼的小組件,不過(guò)他比我們的代碼要強(qiáng)大一些,他給他們提供了豐富的負(fù)載均衡算法。

引入ribbon :三步驟: 加依賴,啟動(dòng)注解,寫(xiě)配置
不需要加,nacosdiscovery,已經(jīng)給添加了依賴,

寫(xiě)注解,需要寫(xiě)到RestTemplate上面。

第三步:寫(xiě)配置
沒(méi)有配置。
改造我們的請(qǐng)求:
url:改為 下面 當(dāng)請(qǐng)求發(fā)送的發(fā)送的時(shí)候ribbon會(huì)將nx-us進(jìn)行轉(zhuǎn)化為我們nacos里面中的地址。并且進(jìn)行負(fù)載均衡算法,進(jìn)行請(qǐng)求,

以上就是Spring Cloud Alibaba負(fù)載均衡實(shí)現(xiàn)方式的詳細(xì)內(nèi)容,更多關(guān)于Spring Cloud Alibaba負(fù)載均衡的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Alibaba?SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡的解決方案
- SpringCloud使用Ribbon實(shí)現(xiàn)負(fù)載均衡的流程步驟
- Spring?cloud負(fù)載均衡@LoadBalanced?&?LoadBalancerClient
- SpringCloud集成Eureka并實(shí)現(xiàn)負(fù)載均衡的過(guò)程詳解
- SpringCloud中的Ribbon負(fù)載均衡詳細(xì)解讀
- 關(guān)于SpringCloud中Ribbon的7種負(fù)載均衡策略解析
- 詳解SpringCloud LoadBalancer 新一代負(fù)載均衡器
- 深入分析Spring Cloud 負(fù)載均衡器架構(gòu)選型
相關(guān)文章
使用Spring源碼報(bào)錯(cuò)java:找不到類 InstrumentationSavingAgent的問(wèn)題
這篇文章主要介紹了使用Spring源碼報(bào)錯(cuò)java:找不到類 InstrumentationSavingAgent的問(wèn)題,本文給大家分享解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
SpringBoot使用spring retry重試機(jī)制的操作詳解
實(shí)際工作中由于網(wǎng)絡(luò)波動(dòng)等原因?qū)е麓a執(zhí)行失敗需要重新執(zhí)行,保證最終能夠完成業(yè)務(wù)功能,通常來(lái)說(shuō),會(huì)用try/catch,while循環(huán)或者定時(shí)任務(wù)重處理,但是這樣的做法缺乏統(tǒng)一性,要多寫(xiě)很多代碼,spring-retry組件可以通過(guò)注解優(yōu)雅的實(shí)現(xiàn)重處理功能2024-12-12
idea2019導(dǎo)入maven項(xiàng)目中的某些問(wèn)題及解決方法
這篇文章主要介紹了idea2019導(dǎo)入maven項(xiàng)目中的某些問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
Spring AOP的底層實(shí)現(xiàn)方式-代理模式
這篇文章主要介紹了Spring AOP的底層實(shí)現(xiàn)方式-代理模式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Spark學(xué)習(xí)筆記 (二)Spark2.3 HA集群的分布式安裝圖文詳解
這篇文章主要介紹了Spark2.3 HA集群的分布式安裝,結(jié)合圖文與實(shí)例形式詳細(xì)分析了Spark2.3 HA集群分布式安裝具體下載、安裝、配置、啟動(dòng)及執(zhí)行spark程序等相關(guān)操作技巧,需要的朋友可以參考下2020-02-02
SpringBoot前后端分離跨域問(wèn)題:狀態(tài)碼403拒絕訪問(wèn)解決辦法
這篇文章主要給大家介紹了關(guān)于SpringBoot前后端分離跨域問(wèn)題:狀態(tài)碼403拒絕訪問(wèn)的解決辦法,403是被服務(wù)器拒絕了,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01

