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进行访问

      

      

      

    原文 SpringCloud学习笔记(7)----Spring Cloud Netflix之负载均衡-Ribbon的深入理解

  • 相关阅读:
    Android 获取Bitmap方式
    o.a.catalina.core.AprLifecycleListener : An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
    idea 全部报错找不到包
    idea Plugin "Maven Integration Extension" was not loaded: required plugin "Maven Integration" is disabled
    okhttp 通过网关请求服务端返回数据
    mongo 过滤查询条件后分组、排序
    OKhttp3
    linux安装consul集群
    spring cloud 订单调用用户
    WebSphere概要文件管理工具
  • 原文地址:https://www.cnblogs.com/xiaoshen666/p/10844171.html
Copyright © 2011-2022 走看看