SpringBoot3.1.5对应新版本SpringCloud开发(2)-Eureka的负载均衡

Eureka的负载均衡

负载均衡原理

  • 负载均衡流程

老版本流程介绍

当order-servic发起的请求进入Ribbon后会被LoadBalancerInterceptor负载均衡拦截器拦截,拦截器获取到请求中的服务名称,交给RibbonLoadBanlancerCient,然后RibbonLoadBanlancerCient会将服务名称当作服务id交给DynamicServerListLoadBanlancer,此时DynamicServerListLoadBanlancer就回去通过eureka-server获取到对应的服务列表,eureka-server会返回真实的服务地址给DynamicServerListLoadBanlancer,然后DynamicServerListLoadBanlancer会通过IRule的实现接口来基于规则选择一种方式获取到返回的真实地址列表中的一个服务返回给RibbonLoadBanlancerCient,然后RibbonLoadBanlancerCient就会通过获取到的真实ip和端口取替换掉原来的服务名称,去发起这个请求获取到对应的数据返回给order-servic

新版本流程介绍

新版本eureka对于netflix包只保留eureka本身,其它组件全部移除,并给出了推荐的替代品。

Netflix 推荐替代品 说明
Hystrix Resilience4j Hystrix自己也推荐你使用它代替自己
Hystrix Dashboard / Turbine Micrometer + Monitoring System 说白了,监控这件事交给更专业的组件去做
Ribbon Spring Cloud Loadbalancer 忍不住了,Spring终究亲自出手
Zuul 1 Spring Cloud Gateway 忍不住了,Spring终究亲自出手
Archaius 1 Spring Boot外部化配置 + Spring Cloud配置 比Netflix实现的更好、更强大

其中,Ribbon被Spring Cloud Loadbalancer替代了,所以新版本的流程将不再通过IRule来选择地址了。

当order-servic发起的请求进入Loadbalancer后会被LoadBalancerInterceptor负载均衡拦截器拦截,拦截器获取到请求中的服务名称,交给LoadBalancerClient,LoadBalancerClient就去通过eureka-server获取到对应的服务列表,并且通过ReactiveLoadBalancer来选择一个并且返回对应的真实地址,然后LoadBalancerClient就会通过获取到的真实ip和端口取替换掉原来的服务名称,去发起这个请求获取到对应的数据返回给order-servic。

需要注意的是,默认ReactiveLoadBalancer只有默认两个实现类,也就意味着它默认只能通过两种方案来选择,一种是随机选择,一种是轮询选择。要做更多的选择需要我们自己编写对应的代码。

相关推荐
Wang's Blog5 分钟前
Java 项目实战: 外卖平台-后台退出功能与首页iframe架构
java·服务器·redis
Wang's Blog6 分钟前
Java 项目实战: 外卖平台-软件开发流程与项目整体介绍
java·服务器·redis
她说..7 分钟前
常见设计模式-模板方法模式
java·spring·设计模式·springboot
步行cgn8 分钟前
BeanFactory 与 FactoryBean 的区别:面试深度解析
java·后端·spring
IT 行者14 分钟前
JDK 27 正式发布:内存、安全、并发三路齐发
java
伍一513 小时前
hiprint-spring-boot打印组件介绍
java·hiprint
Wang's Blog8 小时前
Java 接入Redis: 服务启动停止与后台运行配置
java·服务器·redis
此时不提桶,更待何时9 小时前
01-04-B-垃圾回收面试与生产事故实战
java·jvm·面试
鹿角片ljp10 小时前
KV Cache 解析
java·算法