Spring Cloud Netflix—自定義Ribbon客戶端

使用屬性自定義Ribbon客戶端html

從版本1.2.0開始,Spring Cloud Netflix如今支持使用屬性與Ribbon文檔兼容來自定義Ribbon客戶端。服務器

這容許您在不一樣環境中更改啓動時的行爲。app

支持的屬性以下所示,應以.ribbon.爲前綴:.net

NFLoadBalancerClassName:應實施ILoadBalancer代理

NFLoadBalancerRuleClassName:應實施IRulecdn

NFLoadBalancerPingClassName:應實施IPinghtm

NIWSServerListClassName:應實施ServerListblog

NIWSServerListFilterClassName應實施ServerListFilter接口

注意 在這些屬性中定義的類優先於使用@RibbonClient(configuration=MyRibbonConfig.class)定義的bean和由Spring Cloud Netflix提供的默認值。 要設置服務名稱users的IRule,您能夠設置如下內容:文檔

application.yml users: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule 有關Ribbon提供的實現,請參閱Ribbon文檔。

在Eureka中使用Ribbon

當Eureka與Ribbon結合使用(即二者都在類路徑上)時,ribbonServerList將被擴展爲DiscoveryEnabledNIWSServerList,擴展名爲Eureka的服務器列表。它還用NIWSDiscoveryPing替換IPing接口,代理到Eureka以肯定服務器是否啓動。默認狀況下安裝的ServerList是一個DomainExtractingServerList,其目的是使物理元數據可用於負載平衡器,而不使用AWS AMI元數據(這是Netflix依賴的)。默認狀況下,服務器列表將使用實例元數據(如遠程客戶端集合eureka.instance.metadataMap.zone)中提供的「區域」信息構建,若是缺乏,則可使用服務器主機名中的域名做爲代理用於區域(若是設置了標誌approximateZoneFromHostname)。一旦區域信息可用,它能夠在ServerListFilter中使用。默認狀況下,它將用於定位與客戶端相同區域的服務器,由於默認值爲ZonePreferenceServerListFilter。默認狀況下,客戶端的區域與遠程實例的方式相同,即經過eureka.instance.metadataMap.zone。

注意 設置客戶端區域的正統「archaius」方式是經過一個名爲「@zone」的配置屬性,若是可用,Spring Cloud將優先使用全部其餘設置(請注意,該鍵必須被引用)在YAML配置中)。 注意 若是沒有其餘的區域數據源,則基於客戶端配置(與實例配置相反)進行猜想。咱們將eureka.client.availabilityZones(從區域名稱映射到區域列表),並將實例本身的區域的第一個區域(即eureka.client.region,其默認爲「us-east-1」爲與本機Netflix的兼容性)。

源碼來源:http://minglisoft.cn/honghu/technology.html
相關文章
相關標籤/搜索