1. Ribbon简介
2. 整合Ribbon
1. 添加依赖
2. 为RestTemolate添加@LoadBalanced注解
@Bean
@LoadBalanced
public RestTemplate getRestTemp() {
return new RestTemplate();
}3. 使用RestTemplate
4. 查看当前使用的节点
3.自定义Ribbon配置
1. 代码自定义ribbon客户端
@Configuration
@RibbonClient(name = "server-user", configuration = FooConfiguration.class)
public class TestConfiguration {
}FooConfiguration必须是@Configuration,但请注意,它不在主应用程序上下文的@ComponentScan中,否则将由所有@RibbonClients共享。如果您使用@ComponentScan(或@SpringBootApplication),则需要采取措施避免包含(例如将其放在一个单独的,不重叠的包中,或者指定要在@ComponentScan)
Spring Cloud Netflix默认情况下为Ribbon(BeanType beanName:ClassName)提供以下bean:
IClientConfigribbonClientConfig:DefaultClientConfigImplIRuleribbonRule:ZoneAvoidanceRuleIPingribbonPing:NoOpPingServerList<Server>ribbonServerList:ConfigurationBasedServerListServerListFilter<Server>ribbonServerListFilter:ZonePreferenceServerListFilterILoadBalancerribbonLoadBalancer:ZoneAwareLoadBalancerServerListUpdaterribbonServerListUpdater:PollingServerListUpdater
创建一个类型的bean并将其放置在@RibbonClient配置(例如上面的FooConfiguration)中)允许您覆盖所描述的每个bean。例:
@Configuration
public class FooConfiguration {
@Bean
public IPing ribbonPing(IClientConfig config) {
return new PingUrl();
}
}这用PingUrl代替NoOpPing。
2. 属性自定义ribbon客户端
支持的属性如下所示,应以<clientName>.ribbon.为前缀:
NFLoadBalancerClassName:应实施ILoadBalancerNFLoadBalancerRuleClassName:应实施IRuleNFLoadBalancerPingClassName:应实施IPingNIWSServerListClassName:应实施ServerListNIWSServerListFilterClassName应实施ServerListFilter
注意 | 在这些属性中定义的类优先于使用@RibbonClient(configuration=MyRibbonConfig.class)定义的bean和由Spring Cloud Netflix提供的默认值。 |
server-users:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule
本文介绍了Ribbon作为客户端负载均衡器的基本概念与使用方法。详细讲述了如何整合Ribbon与Eureka,实现服务消费者的智能调用。同时,还探讨了自定义Ribbon配置的方式,包括通过代码和属性进行配置。
525

被折叠的 条评论
为什么被折叠?



