当前位置: 首页 > 网络应用技术

[弹簧云]基于基于功能区的负载平衡实现原理的RESTTEMPLATE

时间:2023-03-07 13:23:41 网络应用技术

  每个人都知道RESTTEMPLATE是基于功能区的负载平衡,那么功能区如何做到?

  首先查找spring-cloud-netflix-ribbon-2.1.0.release.jar这个罐子包

  检查元I-Inf下的弹簧。

  利用Springboot自动配置机制,将自动配置类RibbonAutoconFiguration添加到容器中

  `ribbonautoconfiguration位于org.springframework.cloud.netflix.ribbon软件包下

  请注意,此@AutoConfigurEatter Note将加载LoadBalanceraUtoconfigution自动配置类,在当前类加载后

  跟进LoadBalanceraUuconFiguration自动配置类

  来到org.springframework.cloud.client.loadbalancerancer.loadbalancerautoconfiguration

  首先,您可以看到成员属性rettemplates类型是列表,它是RESTTEMPLE的集合

  头上有一个@autowied和@loadalbalencencate注释。你困惑吗?@autowired何时与@loadalbalencand一起使用?

  单击 @loadBalance的注释以查看@qualifier注释突然意识到此步骤是restTempalte对象,该对象在容器中标记为@loadalanced

  到静态内部类的内部类中的LoadBaranancerinininicerceptor的RibbonInterceptor方法。

  继续看RESTTEMPLATECUSTOMIZER方法

  返回值是功能接口

  这相当于保存Lombad表达式(匿名实现类),目前尚未执行

  然后我们返回上面的代码

  查找loadBarancedTemplempleItialDeprected方法

  `loadBalancerautoconfiguration.this.resttemplates,这是由@loadBalencenced注释的RESTTEMPLATE对象集合

  遍历,遍历和遍历匿名实现类执行自定义RESTTEMPLATECUSTORZER接口的方法。

  返回到restTemplecustMosizer方法,以查看该Lombad表达式如何

  首先在容器中获取LOADBARANCERINTERPECTOMPECTOR i裂截止器,然后将其添加到RESTTEMPLATE对象中

  LoadBalancerInterinterceptor拦截器是完成负载平衡

  原始:https://juejin.cn/post/7096101266610192398