Ribbon-流程图
2021-08-14 14:14:49 0 举报
Ribbon详细流程图
作者其他创作
大纲/内容
保存更新后的服务列表
allServerList
从Eureka注册中心上动态获取服务列表
LoadBalancerInterceptorConfig
RibbonLoadBalancerClient
RibbonAutoConfiguration
注意:updateAction = new NamelessClass_1();
NamedContextFactory.getInstance
RibbonClientConfiguration
apply方法的实现前面已经处理,直接调用
@AutoConfigureBefore
ILoadBalancer = ZoneAwareLoadBalancer
rule.choose
SmartInitializingSingleton
更新服务列表
setServersList
loadBalancer.chooseServer
createContext
RibbonLoadBalancerClient.execute
AbstractServerPredicatechooseRoundRobinAfterFiltering
RestTemplateCustomizer
SimpleBufferingClientHttpRequest.executeInternal
updateAllServerList
LoadBalancerClient.execute
2.getServer
restOfInit
SpringClientFactory.getInstance
defaultConfigType=RibbonClientConfiguration
LoadBalancerAutoConfiguration
clientConfig.get
upServerList
restTemplate.getForObject(\"http://spring-cloud-order-service/orders\
LoadBalancerClient
BaseLoadBalancer
LoadBalancerInterceptor.intercept
根据前面配置的负载策略选择服务
LoadBalancerInterceptor
IClientConfig = DefaultClientConfigImpl
3.服务调用RPC
setPingInterval
1.加载LoadBalancer
updateListOfServers
getUpdatedListOfServers
ServerListUpdater = PollingServerListUpdater
eurekaClient.getInstancesByVipAddress
默认采用轮询算法实现请求的负载均衡
RestTemplateCustomizer的作用是对修饰了@LoadBlanced注解的RestTemplate实例添加LoadBalancerInterceptor拦截器
spring.factoriesorg.springframework.cloud.netflix.ribbon.RibbonAutoConfiguration
2.通过负载策略找到服务
负载均衡访问请求
RibbonClientConfiguration-配置操作
IPing = DummyPing
serverListUpdater.start
PredicateBasedRule
1.getLoadBalancer
IRule = ZoneAvoidanceRule
获取服务列表
重构URI
@LoadBalanced
通过自定义来覆盖相关的实现
父类中初始化
初始化Bean
getLoadBalancer = ZoneAwareLoadBalancer
class NamelessClass_1 implements UpdateAction { NamelessClass_1() { } public void doUpdate() { DynamicServerListLoadBalancer.this.updateListOfServers(); } }
开启每隔30秒检查服务是否正常运行的定时任务
完成RPC通信
每隔30秒会检查一次服务列表是否正常运行(默认情况下不会去验证)
ConfigurationBasedServerList
ClientHttpRequest
initWithConfig
重点
request.apply
request.getURI()
SpringBoot系统启动自动装配
DynamicServerListLoadBalancer
SpringClientFactory
3.execute
enableAndInitLearnNewServersFeature
构造方法中执行
DiscoveryEnabledNIWSServerList
从本地配置获取服务列表
0 条评论
下一页