SpringCloud修改OpenFeign的負載均衡算法的實現(xiàn)步驟
Spring-Cloud-Loadbalancer模塊中有一個自動配置類,其中定義了默認的負載均衡器:

這個Bean上添加了@ConditionalOnMissingBean注解,也就是說如果我們自定義了這個類型的bean,則負載均衡的策略就會被改變。沒有自定義時,默認采用輪詢算法進行負載均衡。
在微服務中添加一個配置類
示例代碼如下:
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.nacos.loadbalancer.NacosLoadBalancer;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;
public class OpenFeignConfig {
@Bean
public ReactorLoadBalancer<ServiceInstance> reactorServiceInstanceLoadBalancer(
Environment environment, NacosDiscoveryProperties properties,
LoadBalancerClientFactory loadBalancerClientFactory) {
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
return new NacosLoadBalancer(
loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name, properties);
}
}配置生效
這個配置類不要加 @Configuration 注解,若配置類加 @Configuration 并被掃描,會強制全局生效,所有 Feign 客戶端只能用這一種策略,無法為不同服務定制
用 @LoadBalancerClients 指定配置,既能設(shè)為全局默認(對所有遠程服務生效),也能針對特定服務單獨配置不同策略
好處是靈活,比如調(diào)用服務 A 用 Nacos 負載均衡,調(diào)用服務 B 用隨機策略,通過這種方式能精準控制,避免策略沖突,適應不同服務的調(diào)用需求。
我們要在啟動類上通過注解來聲明這個配置。
有兩種做法:
- 全局配置:對所有服務生效
@LoadBalancerClients(defaultConfiguration = OpenFeignConfig.class)
- 局部配置:只對某個服務生效
@LoadBalancerClients({
@LoadBalancerClient(value = "item-service", configuration = OpenFeignConfig.class)
})當前該負載均衡算法只會在當前微服務調(diào)用item-service時生效
到此這篇關(guān)于SpringCloud修改OpenFeign的負載均衡算法的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)SpringCloud OpenFeign的負載均衡算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringCloud LoadBalancer負載均衡策略與緩存機制詳解
- 全解析Spring Cloud之負載均衡之LoadBalance
- SpringCloud之LoadBalancer負載均衡服務調(diào)用過程
- SpringCloud之注冊中心之Nacos負載均衡詳解
- Spring Cloud LoadBalancer 負載均衡詳解
- 深入分析Spring Cloud 負載均衡器架構(gòu)選型
- SpringCloud?Ribbon負載均衡流程分析
- SpringCloud使用Ribbon實現(xiàn)負載均衡的流程步驟
- SpringCloud中的Ribbon負載均衡器詳細解析
- SpringCloud中的Ribbon負載均衡詳細解讀
相關(guān)文章
Java中基于Shiro,JWT實現(xiàn)微信小程序登錄完整例子及實現(xiàn)過程
這篇文章主要介紹了Java中基于Shiro,JWT實現(xiàn)微信小程序登錄完整例子 ,實現(xiàn)了小程序的自定義登陸,將自定義登陸態(tài)token返回給小程序作為登陸憑證。需要的朋友可以參考下2018-11-11

