Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法

Spring-cloud学习笔记—Ribbon源码剖析之拦截器Interceptor方法

1. 分析拦截器主要分析LoadBalancerInterceptor的intercept()⽅法

Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法

2. 那么RibbonLoadBalancerClient对象是在哪里注入的?

  1. 回到最初的⾃动配置类RibbonAutoConfiguration中,如下图红色框
  2. 所以说负载均衡的事情执⾏,原来交给了我们最初看到的RibbonLoadBalancerClient对象
    Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法

3. 接下来回到LoadBalancerInterceptor类中查看intercept方法

  1. 查看方法最后一行loadBalancer.execute方法,如下图红色框部分Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法
  2. 点击上图红色框execute方法后,进入LoadBalancerClient接口查看execute方法,点击execute方法直接进入RibbonLoadBalancerClient实现类,查看execute方法,RibbonLoadBalancerClientexecute()方法是⾮常核⼼的⼀个⽅法,总结如下:
    Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法
  3. 查看关注1,点击getLoadBalancer方法
    Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法
  4. 开始怀疑ILoadBalancer实例是什么时候注入的 ,这时回到主配置类RibbonAutoConfiguration
    Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法
  5. 点击SpringClientFactory类进行查看,发现里面装配了很多东西,他在里面也搞了一个ILoadBalancer,也是获取实例,从里面去拿
    Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法
  6. 主要记住SpringClientFactory类的构造器,他里面调用了一个父类,父类调用了一个参数RibbonClientConfiguration
    Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法
  7. 查看RibbonClientConfiguration,在这个类中装配了⼤脑(LoadBalancer:负载均衡调度管理)和肢⼲(另外四个)
    Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法

四肢之一,自己有配置就按配置,没有的话就按照默认的ZoneAvoidanceRule:区域权衡策略(默认策略)

Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法

大脑,自己有配置就按配置,没有的话就按照默认的,ZoneAwareLoadBalancer:区域感知负载均衡器

Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法