Ribbon:客户端负载均衡

一. 简介

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来实现启动时加载对应的上下文,提高首次请求的访问速度;

猜你喜欢

转载自www.cnblogs.com/bbbbs/p/12562426.html
今日推荐