客戶端實現負載均衡:springCloud Ribbon的使用


    Netfilx發布的負載均衡器,是一個基於http、tcp的客戶端負載均衡工具,具有控制http、tcp客戶端的行為,為ribbon配置服務提供者的地址后,ribbon就

可以經過springCloud的封裝實心客戶端負載均衡的服務調用。

 

服務端負載均衡

負載均衡主要是實現對系統的高可用、網絡壓力的緩解、處理能力的伸縮。對於數據流量過大,往往單一設備是無法承擔的,需要多台的設計進行分流。

1.軟負載均衡

  在一台機器上安裝附加的某種軟件,如nginx負載均衡,配置簡單、成本低。根據部署的應用於系統的狀態來分配資源進行負載、負載的能力不過受限於機器本身,性能越好,負載能力越大。

2.硬負載均衡

  通過服務器和外部網絡間安裝負載均衡的設備,稱為"負載均衡器",硬件的負載均衡在功能想、性能上往往高於軟負載均衡,不過價格昂貴,例:F5負載均衡器。能夠通過智能交換機來實現負載,負載的能力與系統、應用無關,主要是通過網絡層來判斷,比如某時候系統處理能力已經不行了,但是可以通過網絡來進行分配,成本高,除設備價格高昂,而且配置冗余.很難想象后面服務器做一個集群,但最關鍵的負載均衡設備卻是單點配置;無法有效掌握服務器及應用狀態。

 

使用springcloud ribbon實現與eureka的配合

 ribbon可從eureka服務注冊表中獲取服務提供者的地址列表,使用一定的負載均衡算法,Ribbon的工作主要分為2步。

1.先選擇eureka service ,優先選擇一個zone負載較小的service。

2.根據用戶制定策,從service取得eureka 服務注冊表中選擇一個地址。

提供的策略:輪詢Round Robin、隨機Random、ResponseTime加權

/*  使用屬性自定義功能區客戶端
    從版本1.2.0開始,Spring Cloud Netflix現在支持使用屬性與Ribbon文檔兼容來自定義功能區客戶端。

    這允許您在不同環境中更改啟動時的行為。

    支持的屬性如下所示,應以<clientName>.ribbon.:

    NFLoadBalancerClassName:應該實施 ILoadBalancer

    NFLoadBalancerRuleClassName:應該實施 IRule

    NFLoadBalancerPingClassName:應該實施 IPing

    NIWSServerListClassName:應該實施 ServerList

    NIWSServerListFilterClassName 應實施 ServerListFilter
    在這些屬性中定義的類優先於使用@RibbonClient(configuration=MyRibbonConfig.class)Spring 定義的bean 以及由Spring Cloud Netflix提供的默認值。
    描述:配置文件中定義ribbon優先代碼定義
    */

 

在微服務架構中使用客戶端負載均衡使用。

1.服務提供者啟動多個服務 注冊到服務注冊中心同一個實例。

2.服務消費者通過使用注解的方式修飾RestTemplate實現向服務的接口進行調用。

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

😴2017年05月26日00:46:44

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM