spring cloud 學習(Ribbon)客戶端負載均衡
阿新 • • 發佈:2020-10-13
spring cloud 學習(Ribbon)
Ribbon 是一個基於Http和Tcp的客戶端負載均衡工具,主要有2個功能: 1.簡化遠端呼叫 2. 負載均衡
服務端負載均衡:
負載均衡演算法在服務端
由負載均衡器維護服務地址列表
客戶端負載均衡
負責均衡演算法在客戶端
客戶端維護服務地址列表
Ribbon可以簡化RestTemplate的遠端呼叫
步驟:1.在定義RestTemplate的時候新增@LoadBalanced註解(該註解就集成了負載均衡)
1 @Bean 2 @LoadBalanced 3 public RestTemplate restTemplate() {4 return new RestTemplate(); 5 }
2.這時候就可以直接在controller的url中直接書寫 服務名稱
@GetMapping("/goods2/{id}") public Goods findGoodsById2(@PathVariable("id") int id){ String url= "http://EUREKA-PROVIDER/goods/findOne/"+id; //遠端呼叫Goods服務中的findOne介面 Goods goods = restTemplate.getForObject(url, Goods.class); return goods; }
負載均衡策略:
隨機: RandomRule
輪詢: RoundRobinRule
最小併發: BestAvailableRule
過濾: AvaliabilityFilteringRule
響應時間: WeightedResponseRule
輪詢重試: RetryRule
效能可用性: ZoneAvoidanceRule
Ribbon預設使用輪詢策略
如何修該 Ribbon 負載均衡策略
方式一:程式碼方式
定義一個配置類,返回一個負載均衡的策略
1 @Configuration2 public class MyRule{ 3 4 @Bean 5 public IRule rule(){ 6 7 return new RandomRule();//負載均衡策略 8 } 9 }
啟動類上新增@RibbonClient註解 註解裡面需要設定 服務提供方的 應用名稱 以及負載均衡的bean
@RibbonClient(name=“EUREKA-PROVIDER”,configuration = MyRule.class)
方式二:配置的方式設定負載均衡策略
1 EUREKA-PROVIDER: #設定服務提供方的 應用名稱 2 ribbon; 3 NFloadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule 4 #策略類的全限定類名