nacos 负载策略_Springcloud + nacos + gateway 负载均衡(ribbon)

本文详细介绍了在Springcloud、Nacos和Gateway集成环境下,如何实现负载均衡。内容涵盖Ribbon的基本概念,负载均衡的重要性,以及通过Nacos的内置策略、自定义规则、健康检查和Ribbon直连IP等方式实现负载均衡的过程和问题分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

what is robbon?

Ribbon是客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用

什么叫负载均衡

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,从而协同完成工作任务。 负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性

本文主要内容

本文主要测试,在Springcloud + nacos + gateway基础上,如何实现负载平衡

准备工作

前面我们已经整合了Springcloud + nacos + gateway,实现了,当启动3个provider时候,通过gateway,可以对该3个provider进行轮询

如何实现负载均衡

1 nocas负载均衡。

a nocas本身已集成了ribbon,默认使用轮询的方式

b 在nocas设置weight,实现权重的方式

c 自定rule(IRule实现类)

d 顺提,在权重的方式下,可使用先设置权重为0,再关闭单一服务的方式,优雅地下线服务

2 使用ribbon直连ip

a 使用ribbon提供的自动策略,轮询,随机等

b 健康检查

v 自定义rule

gateway直连nocas server id,当某个provider down掉的时候,会发生什么事情?

关掉其中一个provider,立即通过gateway进行轮询,发现gateway仍然会call已经down掉的provider,导致查询失败。但在大约5秒后,轮询恢复正常,不再call已经prodiver.

gateway call provider首先经nacos注册中心,nacos心跳机制默认每5秒钟检查一次provider是否正常,因此就会出现上面现象。

nacos自定义rule

1 在启动类,将配置类 将IRule 的实现类注册到spring容器中即可

2 分别测试轮询和随机,可正常按规则负载

ribbon直连ip

1 增加gatewayriboonip模块

2 pom添加依赖spring-cloud-starter-gateway和spring-cloud-starter-netflix-ribbon

3 修改application.yml,设置负载均衡

4 启动,测试可正常进行轮询

5 修改application.yml 如下,可测试到从轮询方式变成了随机的方式

NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

ribbon直连ip健康检查

这个时候down掉一个provider,然后轮询,到这个provider时候,会一直查询失败。我们需要增加一个健康检查处理,在服务down掉的时候,可感知到并将该服务从服务列表去除,在服务上线后,可检查到服务已上线

1 增加健康检查

provider模块增加rest接口HealthController

增加config类,产生RestTemplate

增加健康检查类HealthExamination implements IPing。继承IPing接口,判断服务是否可用。我们在微服务中增加heath接口,在gateway中调用该接口,如果返回正常则认为微服务可用。

修改application.yml 增加Ping如下

NFLoadBalancerPingClassName: com.roy.springnacos.gatewayribbonip.loadBalance.HealthExamination

2 重启provider和gateway,进行测试

a 轮询成功

b down掉其中一个provider,轮询到该provider时候,查询失败

这里测试未能成功,使用RoundRobinRule还是一直出现查询失败,未能自动skip掉down掉的provider

但是自定义LoadBalancerRule的话,是能够成功skip掉down掉的provide的

ribbon直连ip自定义rule

1 增加MyRule extends AbstractLoadBalancerRule

2 重启后,测试成功按规则查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值