原理分析
- @LoadBalanced 注解
- 配置类LoadBalancerAutoConfiguration,引入LoadBalancerInterceptor设置在RestTemplate中。
- 构建RestTemplateCustomizer,创建一个SmartInitializingSingleton bean,在该bean初始化完成后会调用afterSingletonsInstantiated方法,完成对RestTemplate设置拦截器的工作。
- 在使用RestTemplate时会调用该拦截器LoadBalancerInterceptor的intercept方法
- loadBalancer是自动注入的RibbonLoadBalancerClient,负载均衡就看它了。![在这里插入图片描述](https://img-blog.csdnimg.cn/eecbd190ab51449aa613fd34ff1f790f.png
- . 根据配置负载策略选择节点执行。
- 服务更新。以默认ZoneAwareLoadBalancer为例。类的集成关系如下图:
- 服务列表更新。定时长轮询,使用Nacos提供的接口查询服务列表。
- 在以RandomRule为例,看一下。
流程就这样的。