首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【一起学源码-微服务】Ribbon 源码二:通过Debug找出Ribbon初始化流程及ILoadBalancer原理分析

目录如下: 从XXXAutoConfig来追溯Ribbon初始化过程 ZoneAwareLoadBalancer原理分析 说明 原创不易,如若转载 请标明来源!...ZoneAwareLoadBalancer原理分析 我们上面已经知道了Ribbon的大致流程,这里我们可以看到默认的ILoadBalancer 为ZoneAwareLoadBalancer,还是回到之前...execute(serviceId, ribbonServer, request); } 这里第一行代码会获取一个ILoadBalancer 我们其实已经知道了,这里默认的ILoadBalancer 为ZoneAwareLoadBalancer...上面最后图片可以看到,实例化出来的instance是ZoneAwareLoadBalancer , 这个类继承自DynamicServerListLoadBalancer,顺带看下类结构: ?...到了这里就算是分析完了,再深究ZoneAwareLoadBalancer 就到了和Eureka整合相关的了,这一部分放到下一讲继续讲解了。 总结 用一张图做最后的总结: ?

1K20
您找到你想要的搜索结果了吗?
是的
没有找到

Ribbon到底干了啥

获取到对应的 ILoadBalancer 接口,但这个接口的话,会在 RibbonClientConfiguration 类中,通过 @Bean 进行初始化,所以 ILoadBalancer 对应的实现类是 ZoneAwareLoadBalancer...在构建 ZoneAwareLoadBalancer 的时候,会调用 restOfInit 方法,这个方法中调用的updateListOfServers方法就是获取注册表的方法,这个方法主要是靠 ServerImpl...去执行而Server是在创建 ZoneAwareLoadBalancer 实例的时候从构造方法中传入的,我们可以从EurekaRibbonClientConfiguration 类中发现会对 ServerList...默认的话,在创建 ZoneAwareLoadBalancer 的时候,会传入一个 IPing 组件,它是在 org.springframework.cloud.netflix.ribbon.eureka...在这检查的方法调用的话,主要是在创建 ZoneAwareLoadBalancer 的时候,通过调用父类 BaseLoadBalancer 的 initWithConfig 方法,初始化了一个 PingTask

52730

ribbon源码

serverListUpdater); } 棕色部分的代码是去application.yml属性值取, 如果有特别指定使用哪个ILoadBalancer类, 那么优先使用配置中的, 如果配置没有, 则使用new ZoneAwareLoadBalancer...好了, 我们找到这里就可以了, 先不看ZoneAwareLoadBalancer的具体实现....而在上一步,我们知道这个LoadBalancer的实现类是ZoneAwareLoadBalancer, 所以, 我们可以直接到ZoneAwareLoadBalancer里面找到chooseServer方法了...应该是有某个地方传入了这个参数, 或者通过某个参数计算得到了服务列表. ---> 这时我们也不知道在哪里, 那就看看构造方法吧, 看谁的构造方法呢, 负载均衡器的构造方法 前面已经知道负载均衡器使用的是ZoneAwareLoadBalancer..., 调用了父类的构造方法 public ZoneAwareLoadBalancer(IClientConfig clientConfig, IRule rule,

56620
领券