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

這個(gè)Bean上添加了@ConditionalOnMissingBean注解,也就是說如果我們自定義了這個(gè)類型的bean,則負(fù)載均衡的策略就會(huì)被改變。沒有自定義時(shí),默認(rèn)采用輪詢算法進(jìn)行負(fù)載均衡。
在微服務(wù)中添加一個(gè)配置類
示例代碼如下:
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);
}
}配置生效
這個(gè)配置類不要加 @Configuration 注解,若配置類加 @Configuration 并被掃描,會(huì)強(qiáng)制全局生效,所有 Feign 客戶端只能用這一種策略,無法為不同服務(wù)定制
用 @LoadBalancerClients 指定配置,既能設(shè)為全局默認(rèn)(對(duì)所有遠(yuǎn)程服務(wù)生效),也能針對(duì)特定服務(wù)單獨(dú)配置不同策略
好處是靈活,比如調(diào)用服務(wù) A 用 Nacos 負(fù)載均衡,調(diào)用服務(wù) B 用隨機(jī)策略,通過這種方式能精準(zhǔn)控制,避免策略沖突,適應(yīng)不同服務(wù)的調(diào)用需求。
我們要在啟動(dòng)類上通過注解來聲明這個(gè)配置。
有兩種做法:
- 全局配置:對(duì)所有服務(wù)生效
@LoadBalancerClients(defaultConfiguration = OpenFeignConfig.class)
- 局部配置:只對(duì)某個(gè)服務(wù)生效
@LoadBalancerClients({
@LoadBalancerClient(value = "item-service", configuration = OpenFeignConfig.class)
})當(dāng)前該負(fù)載均衡算法只會(huì)在當(dāng)前微服務(wù)調(diào)用item-service時(shí)生效
到此這篇關(guān)于SpringCloud修改OpenFeign的負(fù)載均衡算法的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)SpringCloud OpenFeign的負(fù)載均衡算法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringCloud LoadBalancer負(fù)載均衡策略與緩存機(jī)制詳解
- 全解析Spring Cloud之負(fù)載均衡之LoadBalance
- SpringCloud之LoadBalancer負(fù)載均衡服務(wù)調(diào)用過程
- SpringCloud之注冊(cè)中心之Nacos負(fù)載均衡詳解
- Spring Cloud LoadBalancer 負(fù)載均衡詳解
- 深入分析Spring Cloud 負(fù)載均衡器架構(gòu)選型
- SpringCloud?Ribbon負(fù)載均衡流程分析
- SpringCloud使用Ribbon實(shí)現(xiàn)負(fù)載均衡的流程步驟
- SpringCloud中的Ribbon負(fù)載均衡器詳細(xì)解析
- SpringCloud中的Ribbon負(fù)載均衡詳細(xì)解讀
相關(guān)文章
Java大文本并行計(jì)算實(shí)現(xiàn)過程解析
這篇文章主要介紹了Java大文本并行計(jì)算如何實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Android中Socket通信的實(shí)現(xiàn)方法概述
這篇文章主要介紹了Android中Socket通信的實(shí)現(xiàn)方法,很有實(shí)用價(jià)值,需要的朋友可以參考下2014-08-08
Java中基于Shiro,JWT實(shí)現(xiàn)微信小程序登錄完整例子及實(shí)現(xiàn)過程
這篇文章主要介紹了Java中基于Shiro,JWT實(shí)現(xiàn)微信小程序登錄完整例子 ,實(shí)現(xiàn)了小程序的自定義登陸,將自定義登陸態(tài)token返回給小程序作為登陸憑證。需要的朋友可以參考下2018-11-11
cascade級(jí)聯(lián)關(guān)系操作案例詳解
這篇文章主要介紹了cascade級(jí)聯(lián)關(guān)系,主要包括級(jí)聯(lián)保存,級(jí)聯(lián)修改,級(jí)聯(lián)刪除案例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
深入解析Java類加載的案例與實(shí)戰(zhàn)教程
本篇文章主要介紹Tomcat類加載器架構(gòu),以及基于類加載和字節(jié)碼相關(guān)知識(shí),去分析動(dòng)態(tài)代理的原理,對(duì)Java類加載相關(guān)知識(shí)感興趣的朋友一起看看吧2022-05-05
Java中定時(shí)任務(wù)的6種實(shí)現(xiàn)方式
這篇文章主要給大家分享的是Java中定時(shí)任務(wù)的6種實(shí)現(xiàn)方式,幾乎在所有的項(xiàng)目中,定時(shí)任務(wù)的使用都是不可或缺的,如果使用不當(dāng)甚至?xí)斐少Y損,下面文章我們就來看看Java中定時(shí)任務(wù)的具體使用方式吧2021-10-10

