Spring Cloud(四)——ribbon整合

上一章主要介紹了註冊中心的高可用,地址可見
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章