大概流程:
    
RestTemplate发起http请求,因为RestTemplate添加了@LoadBalanced注解,因此发起的Http请求会被LoadBalanceInterceptor拦截,通过Ribbon负载均衡,从eureka-server中获取服务列表,进行均衡选择,替换请求中的服务名,发送有效的Http请求。
![]()
Ribbon负载均衡具体流程:
![]()
      
RestTemplate发起的Http请求会被LoadBalanceInterceptor拦截,在intercept方法中获取请求的URI,通过URI获取主机名称,也就是我们的服务名称。
![]()
![]()
获取服务列表
![]()
选择服务
![]()
交给父类进行出来
![]()
使用默认的Rule对象
![]()
![]()
![]()
IRule接口的实现类
![]()
返回具体的服务ip以及端口,进行发起请求
![]()
![]()
内置负载均衡规则类
![]()
修改负载均衡规则的两种方式:
(1) 在代码中定义一个新的IRule,用@Bean添加到Spring容器中。
![]()
(2) 在配置文件中修改属性
![]()
饥饿加载
创建DynamicServerListLoadBalance的时间消耗会很长
![]()
![]()
 
             
            posted @ 
2022-09-07 19:23 
别停 
阅读(
17) 
评论() 
 
收藏 
举报