ribbon
2021-02-25 15:21:29 1 举报
ribbon主流程图
作者其他创作
大纲/内容
作为初始化@bean参数数
LoadBalancerContext.reconstructURIWithServer()
InterceptingClientHttpRequest.execute()
clientFactory.getLoadBalancer(serviceId)
restOfInit
DynamicServerListLoadBalancer
super()初始化父类
SmartInitializingSingleton
初始化
一般某个类初始化的地方可以直接去找项目下对应的configuration类里面找
this.iterator.hasNext()=false
@Bean
替换uri
LoadBalancerAutoConfiguration
设置server的定时平任务PingTask()
RibbonAutoConfiguration
RibbonLoadBalancerClient.execute()
restTemplate.getForEntity(\"http://product-center/selectProductInfoById
ZoneAwareLoadBalancer
2.获取所以Nacoss实例列表
@AutoConfigureBefore
SpringClientFactory
RibbonClientConfiguration
用RestTemplateCustomizer定制所有的RestTemplate
@Bean初始化SpringClientFactory
ILoadBalancer
ILoadBalancer loadBalancer = getLoadBalancer(serviceId)
setPingInterval(pingIntervalTime)
初始化父类
RestTemplateCustomizer
updateListOfServers()
BaseLoadBalancer
定制restTemplate(将LLoadBalancerInterceptor封装到restTemplatede的拦截器集合里去)
PollingServerListUpdater
NacosServerList.getUpdatedListOfServers
LoadBalancerInterceptor
LoadBalancerInterceptor.intercept()
作为初始化@bean参数
实现
hostReactor.getServiceInfo
NamedContextFactory
将服务实例列表设置到父类的BaseLoadBalancer的allServerList
setServersList(ls)
返回实例列表
super.setServersList(lsrv)
updateAllServerList(servers)
IPing
LoadBalancerClient
enableAndInitLearnNewServersFeature()
1.ribbon定时获取nacos实例列表
作为bean 的初始化参数
ServiceRequestWrapper.getUrI()
request.apply(serviceInstance)
RibbonLoadBalancerClient
this.defaultConfigType = RibbonClientConfiguration;
1.获取负载均衡器
request.getURI()
serverListUpdater.start(updateAction)
从容器中获取loadBalancer
2.负载均衡器loadBalancer根据负载均衡算法获取服务
serverListImpl.getUpdatedListOfServers()
delegate.execute()
DynamicServerListLoadBalancer初始化实现了doUpdate方法
RibbonLoadBalancerClient.reconstructURI()
initWithConfig
restTemplate
被@LoadBalance注解的RestTemplates
0 条评论
下一页