1. 程式人生 > 實用技巧 >spring cloud 學習(Ribbon)客戶端負載均衡

spring cloud 學習(Ribbon)客戶端負載均衡

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 @Configuration
2 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 #策略類的全限定類名