Ribbon源码是如何获取注册中心的服务列表

ribbon的作用是微服务客户端的一个负载均衡发现器,今天我们就讲一下ribbon底层源码是如何从注册中心获取服务列表的,下面我们就讲一下源码是如何实现的

 

 

我之前有篇文章讲过,controller通过调用restTemplate.getForObject()方法最终会调用到LoadBalancerInterceptor的intercept方法,

 

继续进入这个execute方法

 

在这里会先去获取一个负载均衡器IloadBalancer,我们看看这个this.getLoadBalancer()方法里面做了什么

 

 

这里通过getInstance,最后会调用SpringClientFactory父类的getInstance方法,我进入父类NamedContextFactory看看这个getInstance方法做了什么

 

 

这里核心的逻辑就是,先去本地缓存获取我们调用服务的上下问对象,如果没有就为每个为我们要调用的微服务创建一个上下文对象,并且放入本地缓存里面,我们重点看看这个createContext方法

 

在这段代码里面,new了一个AnnotationConfigApplicationContext类,这个类就是Spring的上下文对象,然后调用context的register方法,为容器注册了一个RibbonClientConfiguration配置类,最后调用context的refresh方法,会走spring 容器的生命周期流程,这里就不做过多赘述,我们来看看这个RibbonClientConfiguration这个类

 


                
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值