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

相关推荐
忆~遂愿几秒前
GE 引擎进阶:依赖图的原子性管理与异构算子协作调度
java·开发语言·人工智能
MZ_ZXD0015 分钟前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·vue.js·spring boot·python·django·php
PP东7 分钟前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
ManThink Technology12 分钟前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
invicinble17 分钟前
springboot的核心实现机制原理
java·spring boot·后端
人道领域25 分钟前
SSM框架从入门到入土(AOP面向切面编程)
java·开发语言
大模型玩家七七1 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
CodeToGym1 小时前
【Java 办公自动化】Apache POI 入门:手把手教你实现 Excel 导入与导出
java·apache·excel
凡人叶枫1 小时前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
JMchen1232 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio