GateWay网关请求转发负载均衡---lb(LoadBalance):格式lb://服务名称
一、请求转发负载均衡
在之前的所有章节我们实现的例子中,路由规则的uri定义都是以http地址的形式写死的,如:http://localhost:8401
,网关收到请求后根据路由规则将请求转发至对应的服务。
但是我们的微服务系统内通常都是一个服务启动多个实例,如下图所示:
为了达到网关接收到的请求能够负载均衡的转发给每个微服务的实例,我们将微服务网关注册到“服务注册中心”,比如:nacos。这样:
- gateway接收到请求后,首先从服务注册中心获取到各个微服务实例的访问地址
- 然后gateway根据客户端负载均衡的规则,选择众多实例中的一个作为请求转发对象。
简单的说:就是将gateway作为一个“服务调用者”注册到nacos服务注册中心,实现客户端负载均衡。
二、集成nacos服务注册客户端
在微服务端怎么集成nacos服务注册中心客户端(nacos章节都讲过),在gateway应用上就怎么集成nacos。
- 通过macen坐标引入nacos服务注册中心客户端jar包
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- 在项目启动类上加上启动服务注册与发现的注解
@EnableDiscoveryClient
- 配置nacos服务的地址
- 启动gateway项目(zimug-server-gateway),在nacos控制台可以看到已经注册成功。
三、修改Gateway路由配置
以上的步骤只是将nacos客户端集成到了gateway项目(zimug-server-gateway),如果我们希望达到请求实例转发负载均衡的效果,还需要针对gateway项目进行配置:
cloud.gateway.discovery.locator.enbled=true。在gatey配置中作用是什么?
来自 AI BOT 回复:
这个设置用于启用和禁用Spring Cloud Gateway内置的服务发现客户端(如Eureka和Consul)。启用后,将自动从配置的服务发现客户端获取服务实例列表。
- 将uri从写死的http访问地址,改为lb://。gateway会通过去nacos请求多实例的服务访问地址列表,从地址列表中选择一个实例进行请求转发。lb是LoadBalance的缩写!
四、测试
我们启动两个aservice-rbac服务实例(本机8401和本机8411端口),并对它通过gateway(8777端口)进行访问测试。
通过观察日志,说明我们网关请求转发的负载均衡效果实现了:
- 第一次请求被转发到了本机8401的aservice-rbac服务实例
- 第2次请求被转发到了本机8411的aservice-rbac服务实例
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库