使用属性自定义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的兼容性)。