【SpringCloud】SpringCloud(二)之Ribbon
目錄
前言
在實際的開發環境中,我們往往會開啟多個生產者的叢集,此時我們獲取的服務列表中就會有多個,那麼我們需要訪問哪一個呢?這時候我們需要編寫負載均衡演算法,在多個例項列表中進行選擇,但是Eureka中已經整合了負載均衡元件:Ribbon。那麼就來了解一下Ribbon吧
一、Ribbon是什麼?
Ribbon是Netflix釋出的負載均衡器,有助於控制http和TCP客戶端的行為,為Ribbon配置服務提供者地址列表後,Ribbon就可基於某種負載均衡演算法,自動的幫助服務消費者去請求.Ribbon預設為我們提供很多的負載均衡演算法.例如:輪詢、隨機等,當然,我們也可為Ribbon實現自動以的負載均衡演算法。
二、Ribbon的使用
以下內容在Eureka程式碼的基礎上:參考連結
1.啟動兩個服務
可以利用我們開啟EurekaServer叢集的方式來啟動.詳細請參考:
啟動之後,開啟Eureka監控皮膚,可以發現,有兩個USER-SERVICE.
2.開啟負載均衡
由於Eureka中已經繼承了Ribbon,所以我們無需引入新的依賴,直接在RestTemplate的方法上面新增@LoadBalanced註解.
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
其次修改消費者的呼叫方式,不在手動獲取ip和埠,直接通過服務名稱呼叫
@GetMapping("{id}")
public User queryById(@PathVariable("id") Long id){
String url = "http://user-service/user/" + id;
User user = restTemplate.getForObject(url, User.class);
return user;
}
我們通過原始碼的跟蹤可以發現,Ribbon的負載均衡是利用輪詢的方式實現的,當然了我們可以修改負載均衡的規則,此時我們需要修改消費者的微服務上的配置(application.yml):
user-service: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
格式是:
{服務名稱}.ribbon.NFLoadBalancerRuleClassName
,值就是IRule的實現類。
Ribbon預設採用的懶載入方式,即第一次訪問時才會去建立負載均衡客戶端,往往會出現超時的情況,如果需要採用飢餓載入的方式,可以使用以下方式修改消費者的微服務上的配置(application.yml):
ribbon: eager-load: enabled: true clients: user-service
3.負載均衡流程圖
相關文章
- 【SpringCloud】之Ribbon負載均衡SpringGCCloud負載
- 【SpringCloud】(七):自定義RibbonSpringGCCloud
- SpringCloud解析之Zuul(二)SpringGCCloudZuul
- SpringCloud之服務提供與呼叫(Ribbon,Feign)SpringGCCloud
- SpringCloud學習筆記(2)——RibbonSpringGCCloud筆記
- SpringCloud客戶端負載均衡——RibbonSpringGCCloud客戶端負載
- SpringCloud 客戶端負載均衡:RibbonSpringGCCloud客戶端負載
- SpringCloud入門(四)Ribbon負載均衡SpringGCCloud負載
- SpringCloud系列之客戶端負載均衡Netflix RibbonSpringGCCloud客戶端負載
- SpringCloud 教程 | 第二篇: 服務消費者(rest+ribbon)SpringGCCloudREST
- SpringCloud之zuulSpringGCCloudZuul
- SpringCloud之HystrixSpringGCCloud
- SpringCloud之EurekaSpringGCCloud
- SpringCloud之GatewaySpringGCCloudGateway
- Springcloud(二) feignSpringGCCloud
- SpringCloud Fegin結合Ribbon實現負載均衡SpringGCCloud負載
- springcloud學習筆記(三)Spring Cloud RibbonSpringGCCloud筆記
- (20)SpringCloud-Ribbon自定義負載均衡策略SpringGCCloud負載
- SpringCloud學習筆記:負載均衡Ribbon(3)SpringGCCloud筆記負載
- ③SpringCloud 實戰:使用 Ribbon 客戶端負載均衡SpringGCCloud客戶端負載
- SpringCloud 服務負載均衡和呼叫 Ribbon、OpenFeignSpringGCCloud負載
- 【SpringCloud】(六):Ribbon實現客戶端負載均衡SpringGCCloud客戶端負載
- SpringCloud學習系列之二 ----- 服務消費者(Feign)和負載均衡(Ribbon)SpringGCCloud負載
- springcloud(二):註冊中心EurekaSpringGCCloud
- SpringCloud Alibaba之NacosSpringGCCloud
- SpringCloud之服務呼叫SpringGCCloud
- SpringCloud解析之Zuul(一)SpringGCCloudZuul
- 微服務之springCloud 生產者和docker部署(二)微服務SpringGCCloudDocker
- 【SpringCloud】Ribbon如何自定義客戶端配置和全域性配置SpringGCCloud客戶端
- SpringCloud基礎概念學習筆記(Eureka、Ribbon、Feign、Zuul)SpringGCCloud筆記Zuul
- 【SpringCloud】(一):SpringCloud入門程式SpringGCCloud
- springcloud 微服務 之 Eureka 配置SpringGCCloud微服務
- springcloud之Hystrix熔斷器SpringGCCloud
- 微服務之springcloud eureka(一)微服務SpringGCCloud
- SpringCloud之服務註冊SpringGCCloud
- springcloud學習(一)之EurekaSpringGCCloud
- springcloudSpringGCCloud
- 業餘草 SpringCloud教程 | 第二篇: 服務消費者(rest+ribbon)(Finchley版本)SpringGCCloudREST