一、介紹
Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客戶端負載均衡器,抽象和實現,用來替代Ribbon(已經停更),
二、Ribbon和Loadbalance 對比
組件 | 組件提供的負載策略 | 支持負載的客戶端 |
---|---|---|
Ribbon | 隨機 RandomRule 輪詢 RoundRobinRule 重試 RetryRule 最低并發 BestAvailableRule 可用過濾 AvailabilityFilteringRule 響應時間加權重 ResponseTimeWeightedRule 區域權重 ZoneAvoidanceRule | Feign或openfeign、RestTemplate |
Spring Cloud Loadbalancer | RandomLoadBalancer 隨機(高版本有,此版本沒有RoundRobinLoadBalancer 輪詢(默認) | Ribbon 所支持的、WebClient |
LoadBalancer 的優勢主要是,支持響應式編程的方式異步訪問客戶端,依賴 Spring Web Flux 實現客戶端負載均衡調用。
三、整合LoadBlance
注意如果是Hoxton之前的版本,默認負載均衡器為Ribbon,需要移除Ribbon引用和增加配置spring.cloud.loadbalancer.ribbon.enabled: false。
1、升級版本
Spring Cloud Alibaba | Spring cloud | Spring Boot |
---|---|---|
2.2.6.RELEASE | Spring Cloud Hoxton.SR9 | 2.3.2.RELEASE |
2、移除ribbon依賴,增加loadBalance依賴
<!--nacos-服務注冊發現-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><exclusions><!--將ribbon排除--><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></exclusion></exclusions>
</dependency><!--添加loadbalanncer依賴, 添加spring-cloud的依賴-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>
四、自定定義負載均衡器
package com.msb.order.loadbalance;import org.springframework.beans.factory.ObjectProvider;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.reactive.DefaultResponse;
import org.springframework.cloud.client.loadbalancer.reactive.EmptyResponse;
import org.springframework.cloud.client.loadbalancer.reactive.Request;