天天看点

SpringCloud第二讲 Ribbon负载均衡源码分析

前言介绍:

      这一讲我们将依据Eureka的负载均衡规则,Eureka的具体服务搭建以及服务注册和服务发现可以参考基于Eureka实现服务注册和服务发现_热爱Java的编程小白的博客-CSDN博客

      Eureka的服务搭建之后便可以在这上面进行服务注册,如果存在两个相同的服务名注册,此时服务请求这个相同名称的服务的时候,将会配合Ribbon进行负载均衡处理,换言之,会在注册的同名服务列表中拉取其中一个服务处理本次请求。因此本讲将详细介绍Ribbon的负载均衡策略源码。

源码介绍:(基于idea工具进行讲解)

      双击键盘Shift打开全局搜索,输入LoadBalancerInterceptor进入到这个类里面,我们可以看到这个类实现了ClientHttpRequestInterceptor这个接口,这个接口是请求拦截器。这个接口会将请求进行拦截并且做负载均衡处理。

SpringCloud第二讲 Ribbon负载均衡源码分析

       进入接口会发现这个接口只有一个实现拦截方法,那么负载均衡将会基于这个拦截方法进行负载均衡处理。

SpringCloud第二讲 Ribbon负载均衡源码分析

      进入方法查看发现会获取地址信息,服务名,获取到的服务名称,将会依据获取到的服务名称拉取从Eureka上拉取的同名服务实例。

SpringCloud第二讲 Ribbon负载均衡源码分析

       继续往下执行会发现allServerList已经从Eureka上拉取到这两个服务名称相同的服务实例

SpringCloud第二讲 Ribbon负载均衡源码分析

       继续跟进rule.choose(key),将会选择轮询还是随机,进入Rule接口

SpringCloud第二讲 Ribbon负载均衡源码分析

 将会看到里面有轮询和随机方法

SpringCloud第二讲 Ribbon负载均衡源码分析

 最后成功拿到实例。

SpringCloud第二讲 Ribbon负载均衡源码分析

Ribbon负载均衡源码分析就到这了,希望对大家有帮助!

继续阅读