【SpringCloud-Alibaba系列教程】5.负载均衡

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 接下来的章节,White带着大家以微服务架构和设计模式落地实战的方式,进行讲解和实现SpingCloud的代码开发,本节将介绍一下Ribbon的使用。

一、介绍

上一章我们简单的说了一下关于Nacos的使用,这次我们首先做从Nacos获取微服务地址和端口的操作,然后再进行引出负载均衡的问题。

二、我们开始吧

首先我们在订单Controller继续编写
image.png
这样就通过了nacos获取商品微服务ip以及端口等信息。
这样看来 我的list中serviceInstanceList.get(0);
获取的是第一个。那么问题来了如果我要想让随机访问到商品微服务ip以及端口上面。
或者我想循环,那么怎么办呢,但是我们如何进行设置呢?
我们首先启动两个端口的商品微服务。
image.png
我们可以通过随机数,随机获取一个微服务序号,然后进行调用。
image.png
这样也会有一个问题,我们要使用其他的负载均衡条件,一般是实现不了的,那有没有其他的负载均衡的组件呢?
答案肯定是有的,那就是Ribbon。
那我们接下来就是使用这个Ribbon进行对我们的代码优化。
我们打开OrderApplication在restTemplate添加一个负载均衡注解
image.png
image.png
然后我们打开地址http://localhost:8091//order/prod/1
image.png
刷新两次进行日志查看:
image.png
image.png
我们可以看到两次分别落在了两个端口,这样就实现了我们基本的Ribbon(默认是轮询)负载均衡
当然还有其他的模式例如
RandomRule随机策略:随机选择server
RoundRobinRule轮询策略:轮询选择, 轮询index,选择index对应位置的Server;
RetryRule重试策略:对选定的负载均衡策略机上重试机制,在一个配置时间段内当选择Server不成功,则一直尝试使用subRule的方式选择一个可用的server;
BestAvailableRule最低并发策略:逐个考察server,如果server断路器打开,则忽略,再选择其中并发链接最低的server
AvailabilityFilteringRule可用过滤策略:过滤掉一直失败并被标记为circuit tripped的server,过滤掉那些高并发链接的server(active connections超过配置的阈值)或者使用一个AvailabilityPredicate来包含过滤server的逻辑,其实就就是检查status里记录的各个Server的运行状态;
ResponseTimeWeightedRule响应时间加权重策略:根据server的响应时间分配权重,响应时间越长,权重越低,被选择到的概率也就越低。响应时间越短,权重越高,被选中的概率越高,这个策略很贴切,综合了各种因素,比如:网络,磁盘,io等,都直接影响响应时间。
ZoneAvoidanceRule区域权重策略:综合判断server所在区域的性能,和server的可用性,轮询选择server并且判断一个AWS Zone的运行性能是否可用,剔除不可用的Zone中的所有server
具体可以查看相关wiki: https://github.com/Netflix/ribbon/wiki
我们可以在配置文件中配置
service-product: #服务提供者的名称
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #策略

这样我们就实现了负载均衡。
后期会在这个项目上不断添加,喜欢的请点个start~
项目源码参考一下分支220127_xgc_loadBalance
Gitee:https://gitee.com/coderxgc/springcloud-alibaba
GitHub:https://github.com/coderxgc/springcloud-alibaba

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
3月前
|
负载均衡 算法 Java
Spring Cloud全解析:负载均衡算法
本文介绍了负载均衡的两种方式:集中式负载均衡和进程内负载均衡,以及常见的负载均衡算法,包括轮询、随机、源地址哈希、加权轮询、加权随机和最小连接数等方法,帮助读者更好地理解和应用负载均衡技术。
|
1月前
|
负载均衡 算法 Java
除了 Ribbon,Spring Cloud 中还有哪些负载均衡组件?
这些负载均衡组件各有特点,在不同的场景和需求下,可以根据项目的具体情况选择合适的负载均衡组件来实现高效、稳定的服务调用。
54 5
|
3月前
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
|
5月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
548 15
|
3月前
|
运维 负载均衡 监控
slb学习教程
【9月更文挑战第1天】
60 0
|
6月前
|
缓存 负载均衡 Java
Java一分钟之-Spring Cloud Netflix Ribbon:客户端负载均衡
【6月更文挑战第9天】Spring Cloud Netflix Ribbon是客户端负载均衡器,用于服务间的智能路由。本文介绍了Ribbon的基本概念、快速入门步骤,包括添加依赖、配置服务调用和使用RestTemplate。此外,还讨论了常见问题,如服务实例选择不均、超时和重试设置不当、服务列表更新不及时,并提供了相应的解决策略。最后,展示了如何自定义负载均衡策略。理解并正确使用Ribbon能提升微服务架构的稳定性和效率。
229 3
|
6月前
|
JSON Java Spring
实战SpringCloud响应式微服务系列教程(第八章)构建响应式RESTful服务
实战SpringCloud响应式微服务系列教程(第八章)构建响应式RESTful服务
|
6月前
|
负载均衡 算法 Nacos
SpringCloud之LoadBalancer自定义负载均衡算法,基于nacos权重
ReactorLoadBalancer接口,实现自定义负载算法需要实现该接口,并实现choose逻辑,选取对应的节点。
485 0
|
6月前
|
Java Nacos Spring
SpringCloud之LoadBalancer负载均衡器的简单使用
RoundRobin: 轮询策略,意思循环往复的的服务进行选取。
228 0
|
7月前
|
负载均衡 算法
SpringCloud&Ribbon负载均衡原理与实践
SpringCloud&Ribbon负载均衡原理与实践
81 3