上一章主要介紹了註冊中心的高可用,地址可見
https://blog.csdn.net/qq_37031675/article/details/104007366
一.說明
我們服務的消費者在調用服務的提供者,爲了避免高併發請求對於服務的響應,通常會採用負載均衡,通常web項目使用的是nginx,本文介紹springcloud的另一個組件ribbon
二.代碼使用
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
服務調用端,在RestTemplate的ioc過程中添加@LoadBalanced註解
public static final String PRODUCT_GET_URL = "http://MICROCLOUD-PROVIDER-PRODUCT/prodcut/get/";
Product product = restTemplate.exchange(PRODUCT_GET_URL + id,HttpMethod.GET,new HttpEntity<Object>(httpHeaders), Product.class).getBody();
這樣restTemplate在使用過程中會根據從註冊中心拉取的服務列表,默認以輪詢算法來訪問具體服務(通過服務名)提供者ip
不想使用默認輪詢?
@Bean
public IRule iRule(){
return new RandomRule();
}
將IRule配置到配置類中,就可以實現隨機訪問服務提供端,這樣使用的負載算法是全局的!
想針對不同服務設置不同負載均衡算法?
不要讓boot項目掃描到配置類
@Configuration
public class RibbonConfig {
@Bean
public IRule iRule(){
return new RandomRule();
}
}
然後在啓動類設置不同服務不同負載方式如下,啓動類添加下列註解
@RibbonClient(name = "MICROCLOUD-PROVIDER-PRODUCT",configuration = RibbonConfig.class)
三.結尾
針對ribbon其實沒什麼好說的,實際項目會使用feign,底層使用的也就是ribbon的輪詢算法,下一張將會通過日誌做具體說明。
想要實際驗證的碼友可從github直接拉取項目
https://github.com/managerlu/clouddemo