ribbon 代码逻辑分析
2020-09-15 17:00:39 25 举报
ribbon
作者其他创作
大纲/内容
beforeCondition
在加载时构建上下文
LoadBalancerClient
参数
this.setServersList(ls)
ZoneAwareLoadBalancer
DiscoveryEnabledNIWSServerList
生成真正的restTemplate
restTemplate
SpringClientFactory
LoadBalancerAutoConfiguration
RibbonLoadBalancerClient
LoadBalancerInterceptor.intercept
ServerList<Server> serverList
this.rule.choose(key)
DomainExtractingServerList.getUpdatedListOfServers()
getLoadBalancer()
进入拦截器
loadBalancer.chooseServer(\"default\")
DomainExtractingServerList
updateListOfServers()
参数是按类型注入的,虽然同个configuration 文件中有定义,由于condition 条件,实际使用的是eurekaclient 创建的bean
this.serverListImpl.getUpdatedListOfServers()
实际调用
调用
SmartInitializingSingleton
实例
配置文件>java 配置>默认
PollingServerListUpdater
DynamicServerListLoadBalancer
初始化bean
调用eureka client 方法获取缓存
真正注入
存储了所有被LoadBalanced 的注解
RibbonAutoConfiguration
获取可用ip
serverListUpdater.start(this.updateAction)
context 上下文
debug 结果
zoneLoadBalancer.chooseServer(key)
对每一个restTemplate 添加对应的拦截器
enableAndInitLearnNewServersFeature()
this.restTemplate.postForObject(\"http://app/pay\
获取
updateAllServerList()
eureka-client包下
创建定时任务调用获取方法
初始化父类
真正的实例
初始化参数
调用restOfInit(clientConfig)
真正调用
Irule
LoadBalancerInterceptor
LoadBalancerRequestFactory
RibbonClientConfiguration
2
初始化
返回结果
eurekaClient.getInstancesByVipAddress
BaseLoadBalancer.chooseServer()
1
getServer()
loadBalancer.execute
RestTemplateCustomizer
RibbonLoadBalancerClient.execute
构造函数创建
SpringClientFactory.getLoadBalancer(serviceId)
restTemplates
0 条评论
下一页