Spring-cloud学习笔记---Ribbon服务器端和客户端负载均衡

Spring-cloud学习笔记—Ribbon服务器端和客户端负载均衡

1. 关于负载均衡

  1. 负载均衡⼀般分为服务器端负载均衡客户端负载均衡
  2. 所谓服务器端负载均衡,⽐如Nginx、F5这些,请求到达服务器之后由这些负载均衡器根据⼀定的算法将请求路由到⽬标服务器处理。
  3. 所谓客户端负载均衡,⽐如我们要说的Ribbon,服务消费者客户端会有⼀个服务器地址列表,调⽤⽅在请求前通过⼀定的负载均衡算法选择⼀个服务器进⾏访问,负载均衡算法的执⾏是在请求客户端进⾏。
  4. Ribbon是Netflix发布的负载均衡器。Eureka⼀般配合Ribbon进⾏使⽤,Ribbon利⽤从Eureka中读取到服务信息,在调⽤服务提供者提供的服务时,会根据⼀定的算法进⾏负载。
    Spring-cloud学习笔记---Ribbon服务器端和客户端负载均衡_第1张图片

2. Ribbon负载均衡策略

  1. 不需要引⼊额外的Jar坐标,因为在服务消费者中我们引⼊过eureka-client,它会引⼊Ribbon相关Jar

  2. 代码中使⽤如下,在RestTemplate上添加对应注解即可
    Spring-cloud学习笔记---Ribbon服务器端和客户端负载均衡_第2张图片

  3. Ribbon内置了多种负载均衡策略,内部负责复杂均衡的顶级接⼝com.netflix.loadbalancer.IRule ,其中choose方法是IRule的核心方法,

    public interface IRule{
        /*
         * choose one alive server from lb.allServers or
         * lb.upServers according to key
         * 
         * @return choosen Server object. NULL is returned if none
         *  server is available 
         */
    
        public Server choose(Object key);
        
        public void setLoadBalancer(ILoadBalancer lb);
        
        public ILoadBalancer getLoadBalancer();    
    }
    
  4. IRule的类树如下
    Spring-cloud学习笔记---Ribbon服务器端和客户端负载均衡_第3张图片

  5. 负载均衡策略
    Spring-cloud学习笔记---Ribbon服务器端和客户端负载均衡_第4张图片

  6. 修改某个微服务的负载均衡策略,针对的被调⽤⽅微服务名称

    #针对的被调⽤⽅微服务名称,不加微服务名称就是全局⽣效
    lagou-service-resume:
      ribbon:
        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载策略调整
    
  7. 修改全局微服务的负载均衡策略

    #不加微服务名称就是针对全局⽣效的负载均衡策略
    ribbon:
      NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载策略调整
    

你可能感兴趣的:(springcloud)