Spring Cloud Netflix—自定義Ribbon客戶端

使用屬性自定義Ribbon客戶端

從版本1.2.0開始,Spring Cloud Netflix現(xiàn)在支持使用屬性與Ribbon文檔兼容來自定義Ribbon客戶端。

這允許您在不同環(huán)境中更改啟動(dòng)時(shí)的行為。

支持的屬性如下所示,應(yīng)以.ribbon.為前綴:

NFLoadBalancerClassName:應(yīng)實(shí)施ILoadBalancer

NFLoadBalancerRuleClassName:應(yīng)實(shí)施IRule

NFLoadBalancerPingClassName:應(yīng)實(shí)施IPing

NIWSServerListClassName:應(yīng)實(shí)施ServerList

NIWSServerListFilterClassName應(yīng)實(shí)施ServerListFilter

注意在這些屬性中定義的類優(yōu)先于使用@RibbonClient(configuration=MyRibbonConfig.class)定義的bean和由Spring Cloud Netflix提供的默認(rèn)值。

要設(shè)置服務(wù)名稱users的IRule,您可以設(shè)置以下內(nèi)容:

application.yml

users:

? ribbon:

? ? NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule

有關(guān)Ribbon提供的實(shí)現(xiàn),請(qǐng)參閱Ribbon文檔。

在Eureka中使用Ribbon

當(dāng)Eureka與Ribbon結(jié)合使用(即兩者都在類路徑上)時(shí),ribbonServerList將被擴(kuò)展為DiscoveryEnabledNIWSServerList,擴(kuò)展名為Eureka的服務(wù)器列表。它還用NIWSDiscoveryPing替換IPing接口,代理到Eureka以確定服務(wù)器是否啟動(dòng)。默認(rèn)情況下安裝的ServerList是一個(gè)DomainExtractingServerList,其目的是使物理元數(shù)據(jù)可用于負(fù)載平衡器,而不使用AWS AMI元數(shù)據(jù)(這是Netflix依賴的)。默認(rèn)情況下,服務(wù)器列表將使用實(shí)例元數(shù)據(jù)(如遠(yuǎn)程客戶端集合eureka.instance.metadataMap.zone)中提供的“區(qū)域”信息構(gòu)建,如果缺少,則可以使用服務(wù)器主機(jī)名中的域名作為代理用于區(qū)域(如果設(shè)置了標(biāo)志approximateZoneFromHostname)。一旦區(qū)域信息可用,它可以在ServerListFilter中使用。默認(rèn)情況下,它將用于定位與客戶端相同區(qū)域的服務(wù)器,因?yàn)槟J(rèn)值為ZonePreferenceServerListFilter。默認(rèn)情況下,客戶端的區(qū)域與遠(yuǎn)程實(shí)例的方式相同,即通過eureka.instance.metadataMap.zone。

注意設(shè)置客戶端區(qū)域的正統(tǒng)“archaius”方式是通過一個(gè)名為“@zone”的配置屬性,如果可用,Spring Cloud將優(yōu)先使用所有其他設(shè)置(請(qǐng)注意,該鍵必須被引用)在YAML配置中)。

注意如果沒有其他的區(qū)域數(shù)據(jù)源,則基于客戶端配置(與實(shí)例配置相反)進(jìn)行猜測(cè)。我們將eureka.client.availabilityZones(從區(qū)域名稱映射到區(qū)域列表),并將實(shí)例自己的區(qū)域的第一個(gè)區(qū)域(即eureka.client.region,其默認(rèn)為“us-east-1”為與本機(jī)Netflix的兼容性)。

源碼來源:http://minglisoft.cn/honghu/technology.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容