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

导读:本篇文章讲解 SpringCloud第二讲 Ribbon负载均衡源码分析,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

前言介绍:

      这一讲我们将依据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负载均衡源码分析

 将会看到里面有轮询和随机方法,但是这里用到的实现类是ZoneAvidanceRlue(),这个实现类是以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房,一个机架等。而后再对Zone内的多个服务做轮询。SpringCloud第二讲 Ribbon负载均衡源码分析

 最后成功拿到实例。

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

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



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/105055.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!