一. 简介
1. 为Ribbon配置服务提供者地址列表后,Ribbon就可以基于某种负载均衡算法,自动帮助服务消费者去请求;
2. 当Ribbon与Eureka配合使用时,Ribbon可以自动冲Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例;
3. 为服务消费者整合Ribbon
添加spring-cloud-starter-netflix-ribbon依赖;
为RestTemplate增加@LoadBalanced注解;
在Controller中将请求地址改成微服务的虚拟主机名;
4.Ribbon配置
@RibbonClient注解的configuration属性,可以自定义指定名称Ribbon客户端的配置;
如果想自定义某一个Ribbon客户端的配置,必须防止@Configuration注解的类所在的包与@ComponentScan扫描的包重叠,或应显示指定@ComponentScan不扫描@Configuration类所在的包;
使用属性自定义:
NFLoadBalancerClassName:配置ILoadBalancer的实现类;
NFLoadBalancerRuleClassName:配置IRule的实现类;
NFLoadBalancerPingClassName:配置IPing的实现类;
NIWSServerListClassName:配置ServerList的实现类;
NIWSServerListFilterClassName:配置ServerListFilter的实现类;
5. 脱离Eureka使用Ribbon
如果想单独使用Ribbon,而不使用Eureka的服务发现功能,需要添加配置ribbon.eureka.enabled = false;
如果只想让指定名称的Ribbon Client使用指定的URL请求,其他Ribbon Client依旧与Eureka配合使用,可以配置
<clientName>.ribbon.NIWSServerListClassName = com.netflix.loadbalancer.ConfigurationBasedServerList
<clientName>.ribbon.listOfServers = localhost:8000, localhost:8001
6. 饥饿加载
Spring Cloud回味每个Ribbon Client维护一个子应用程序上下文,默认懒加载,所以第一次请求时往往会比较慢,可以通过ribbon.eager-load.enabled = true来实现启动时加载对应的上下文,提高首次请求的访问速度;