首页 > 其他分享 >SpringCloud复习:(2)@LoadBalanced注解的工作原理

SpringCloud复习:(2)@LoadBalanced注解的工作原理

时间:2023-10-30 10:32:57浏览次数:38  
标签:复习 LoadBalanced SpringCloud RestTemplate bean 添加 LoadBalancerInterceptor 注解


@LoadBalanced注解标记了一个RestTemplate或WebClient bean使用LoadBalancerClient来进行负载均衡。

LoadBalancerAutoConfiguration类给带注解的@RestTemplate添加了拦截器:LoadBalancerInterceptor.

具体流程如下:

首先定义一个LoadBalancerInterceptor

SpringCloud复习:(2)@LoadBalanced注解的工作原理_负载均衡


然后定义了一个RestTemplateCustomizer bean,这个bean 通过customize方法将传入的RestTemplate添加上边定义的LoadBalancerInterceptor,最后再定义一个SmartInitializingSingleton bean,容器创建时,会调用其afterSingletonsInstantiated方法,在这个方法里传入使用了@LoadBalanced注解标记的RestTemplate,然后调用上一步中的RestTemplateCustomizer的customize方法来给RestTemplate添加Interceptor.

SpringCloud复习:(2)@LoadBalanced注解的工作原理_主机名_02

总结: 通过@LoadBalanced注解,来判断哪些RestTemplate需要负载均衡功能。通过给RestTemplate添加拦截器来具体实现负载功能。

可以在方法中注入LoadBalancerClient,然后调用choose方法,来获取ServiceInstance对象,以进一步获取某个服务的信息,比如主机名、端口号等。

SpringCloud复习:(2)@LoadBalanced注解的工作原理_拦截器_03


标签:复习,LoadBalanced,SpringCloud,RestTemplate,bean,添加,LoadBalancerInterceptor,注解
From: https://blog.51cto.com/amadeusliu/8086338

相关文章

  • SpringCloud复习:(3)LoadBalancerInterceptor
    使用Ribbon时,execute方法会由RibbonLoadBalancerClient类来实现它会调用重载的execute方法getLoadBalancer默认会返回ZoneAwareLoadBalancer(基类是BaseLoadBalancer).此处调用的getServer方法就会根据负载均衡策略选择适当的服务器来为下一步的http请求做准备。这个execute方法......
  • SpringCloud复习:(1)netflix包里的DiscoveryClient类
    DiscoveryClient类实现了EurekaClient接口它的主要作用:服务注册,服务续约,服务下线,获取服务列表。initScheduledTasks方法用来开启定时任务来完成上述功能。上图中的代码用来从服务器定期(默认30秒)拉取服务列表(ScheduledExecutorService的应用场景)其中TimedSupervisorTask这个Run......
  • linux基本文件命令复习笔记
    1,放大缩小终端窗口字体  放大 ctrlshift+=   缩小  ctrl-2,6个常见终端命令 (1)ls  查看当前文件夹下的内容 (2)pwd 查看当前所在文件夹  (3)cd目录名 切换文件夹 (4)touch文件名 如果文件不存在,新建文件。和mkdir不同的是,mkdir创......
  • JavaScript复习——02
    代码块写法:{}使用代码块,可以对代码进行分组,同一个代码块中的代码就是同一组代码,一个代码块中的代码,要么都执行,要么都不执行let和var的区别在JS中,let声明的变量具有块级作用域var声明的变量,不具有块级作用域var声明的变量会将变量的声明提至最前对象原始值只能表示......
  • 现代企业管理的部分复习笔记
    因为不是专业课学的比较随意,大概会分成四个部分,三个内容一个部分题,最近就要考试了,共勉格式问题显示不好  用word写的,链接如下我用夸克网盘分享了「现代企业管理.docx」,点击链接即可保存。打开「夸克APP」在线查看,支持多种文档格式转换。链接:https://pan.quark.cn/s/aacef986......
  • 408---CO三轮复习---中央处理器
    重难点总结1、CPU的结构,各种功能部件 ⭐⭐⭐⭐⭐2、指令执行过程、指令执行数据流 ⭐⭐⭐⭐⭐⭐⭐3、控制器的功能和工作原理(硬步线、微程序控制器) ⭐⭐⭐4、流水线 ⭐⭐⭐⭐5、高级流水线技术 ⭐⭐6、多处理器的基本概念 ⭐CPU的结构与功能1、CPU又叫中央处理......
  • 传统的API网关和SpringCloud Gateway区别对比
    传统的API网关和SpringCloudGateway的主要区别在于架构和性能。传统的API网关通常是独立于各个后端服务的,请求会先打到独立的网关层,再转发到服务集群。而SpringCloudGateway则将流量从南北走向改为东西走向,微服务网关和后端服务是在同一个容器中的,也被称为GatewaySidecar。......
  • SpringCloud微服务多应用脚手架的搭建与部署
    最近几年SpringBoot大热,很多IT公司都开始采用SpringBoot来替换传统的SpringMVC项目。那么如何搭建一个适合开发的项目架构呢?这里我主要介绍Java程序员使用最多的两种工具进行搭建:1、MyEclipse;2、ideaMyEclipse第一步:打开MyEclipse,选择File—>New—>Other,搜索maven,点击next 第二步:......
  • 每天5分钟复习OpenStack(七)内存虚拟化
    标题中的存储虚拟化,涉及到两个方面,分别是内存和磁盘的虚拟化技术。内存的虚拟化就不得不提EPT和VPID技术.首先申明下本人其实不想写一些纯理论的东西,但是架不住面试经被问,为此特将一些特别复杂的技术底层都隐去,尽量将技术讲的简单,我个人信奉一句话'Ifyoucan'texplainits......
  • usb2.0协议复习--Apple的学习笔记
    一,前言10多年前买过一本圈圈教你usb,然后自己移植了代码到自己焊接的单片机最小系统,当时连原理图都是我自己画的,现在原理图软件已经不知道怎么用了,所以usb协议基本也忘记了。居然配置了usbhost那么简单,这样感觉都没有学习过什么,我还是希望要雁过留痕。所以下载了wiresharkusb抓包......