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
