Ribbon加载和负载均衡
2022-12-04 22:26:56 0 举报
AI智能生成
Ribbon加载和负载均衡
作者其他创作
大纲/内容
RestTemplate调用 doExecute方法
获得InterceptingClientRequest类
调用ExecuteInternal方法
调用LoadBalanceInterceptor.intercept()
调用RibbonLoadBalanceClient.execute
获得实现ILoadBalance的实现类ZoneAwareLoadBalancer(通过RibbonClientConfiguration自动注入)
调用getServer获得具体的实例
然后调用chooseServer选择指定的服务(负载均衡)
通过调用实现IRule的实现类选择指定的服务,RibbonClientConfiguration默认注入的是轮询的实现类
默认是ZoneAvoidanceRule,如果配置文件有配置优先配置文件
更具条件获取Server的对应实例,哪里实例怎么获取的呢,又怎么动态更新呢?看右边
获得IRule里面的实例就可以发起请求了
Ribbon实例动态获取和更新
在实例化ZoneAwareLoadBalancer 时候会初始化父类DynamicServerListLoadBalancer
调用restOfInit方法初始化注册实例
调用updateListOfServers更新
调用serverListImpl.getUpdateListOfServers 这个注册是在 EurekaRibbonClientConfiguration里面注入 DomainExtractingServerList
调用DiscoveryEnabledNIWSServerList获取具体实例obtainServersViaDiscovery
0 条评论
下一页