前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【SpringCloud-Alibaba系列教程】5.负载均衡

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

原创
作者头像
xgc
发布2022-02-26 09:33:57
5350
发布2022-02-26 09:33:57
举报
文章被收录于专栏:SpringCloud-AlibabaSpringCloud-Alibaba

一、介绍

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

二、我们开始吧

首先我们在订单Controller继续编写

image.png
image.png

这样就通过了nacos获取商品微服务ip以及端口等信息。

这样看来 我的list中serviceInstanceList.get(0);

获取的是第一个。那么问题来了如果我要想让随机访问到商品微服务ip以及端口上面。

或者我想循环,那么怎么办呢,但是我们如何进行设置呢?

我们首先启动两个端口的商品微服务。

image.png
image.png

我们可以通过随机数,随机获取一个微服务序号,然后进行调用。

image.png
image.png

这样也会有一个问题,我们要使用其他的负载均衡条件,一般是实现不了的,那有没有其他的负载均衡的组件呢?

答案肯定是有的,那就是Ribbon。

那我们接下来就是使用这个Ribbon进行对我们的代码优化。

我们打开OrderApplication在restTemplate添加一个负载均衡注解

image.png
image.png
image.png
image.png

然后我们打开地址http://localhost:8091//order/prod/1

image.png
image.png

刷新两次进行日志查看:

image.png
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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、介绍
  • 二、我们开始吧
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档