zoukankan      html  css  js  c++  java
  • SpringCloud学习笔记(7)----Spring Cloud Netflix之负载均衡-Ribbon的深入理解

    1. 注解@LoadBalanced

      作用:识别应用名称,并进行负载均衡。

    2. 入口类:LoadBalancerAutoConfiguration

      

      

      说明:类头上的注解可以知道Ribbon 实现的负载均衡自动化配置需要满足两个条件
        1、 RestTemplate 类必须存在于当前工程的环境中
        2、 在Spring 的Bean工程中有必须有LoadBalancerClient 的实现Bean

    3.  LoadBalancerClient 类

      

      

      

      说明:从接口中,可以通过定义的方法了解到负载均衡器具备下面几个功能
        1. 根据服务 ID ,从负载均衡器里面挑选一个服务实例 
        2. 使用从负载均衡器中挑选出的服务实例来执行指定的内容 。
        3. 为系统构建一个合适的“host:port” 形式的URI。

    4. LoadBalancerInterceptor 类

      

      

       说明 :当一个被@LoadBalanced注解修饰的 RestTemplate对象向外发起HTTP请求时,会被 LoadBalancerInterceptor类的 intercept函数所拦截,这个时候就会使用负载均衡器进行调执执行。

      

      

      说明 :
        1、 利用IloadBalancer接口 ,调用其 调用其 chooseServer("default")方法获取一个Server。
        2、 包装一个 RibbonServer对象 ,之后执行 execute方法

      RibbonClientConfiguration类

      

      这里是IloadBalancer的实现类

      ZoneAwareLoadBalancer类

      

      

      说明 :
        1、 当 Zone个数大于 个数大于 1时,才会向下执行 时,才会向下执行
        2、 当小于 1时,使用父类的 chooseServer方法 获取 Server
        3、 当大于 1是,随机选择一个 Zone使用 zoneLoadBalancer的chooseServer方法 获取 Server
        4、 最终都是调用 BaseLoadBalancer类的 chooseServer方法

      BaseLoadBalancer类

      

      说明 :
        1、 这里使用 rule的 choose方法进行调用 方法进行调用 ,返回 server
        2、 rule的默认是使用 RoundRobinRule

      RibbonLoadBalancerClient类

      

       说明 :apply使用的是 LoadBalancerRequestFactory类里面的方法 类里面的方法 ,从 LoadBalancerInterceptor类可 以知道 。RibbonStatsRecorder是对服务的请求进行跟踪记录

      

       说明:封装了 ServiceRequestWrapper,重写了getURI函数,重写后的 getURI会通过调用 LoadBalancerClient接口的 reconstructURI函数来重新构建一个 函数来重新构建一个 URI进行访问

      

      

      

  • 相关阅读:
    疫情数据背后,聊聊数据分析平台变迁史
    华为五大专家亲述:如何转型搞 AI?
    【华为云技术分享】LwM2M协议的学习与分享
    Spring5参考指南: BeanWrapper和PropertyEditor
    Spring5参考指南: Resources
    Spring5参考指南:事件Event
    Spring5参考指南:Environment
    Spring5参考指南:JSR 330标准注解
    Spring5参考指南:组件扫描
    Spring5参考指南:基于注解的容器配置
  • 原文地址:https://www.cnblogs.com/Eternally-dream/p/9839580.html
Copyright © 2011-2022 走看看