SpringCloud学习(2)--- Ribbon详解

前言

上一篇Eureka详解链接

下面学习Ribbon,Ribbon是服务与服务之间的负载均衡,画图解释
在这里插入图片描述
跟着学习过上一篇:Eureka就知道,上一篇讲服务注册与发现,用的是用户买了商品进行支付的例子,那支付模块对于公司无疑是十分重要模块,不可能只放在一个服务器上,肯定放在多个服务器上,这样一个支付服务宕机也不会影响用户支付,多个服务器也可以分摊用户请求压力,不让支付请求都在一个服务器上,平摊压力。那customer是如何选取多个支付模块的呢?用的什么负载均衡策略呢?

首先2个支付服务会注册到Eureka中,然后customer作为服务消费方,会拉取这注册的两个支付模块到自己缓存中,然后通过Ribbon负载均衡策略,选取哪个pay调用

注意:Ribbon是客户端负载均衡,就是customer自己来选择调用哪个pay服务,而不是又服务器(服务端)来告诉customer你应该去调哪个pay,nginx就是服务端负载均衡,用它的话,它会每次告诉customer应该去调哪个pay服务
在这里插入图片描述
在这里插入图片描述
后面会将负载均衡策略,有轮巡、随机等等

一、Ribbon负载均衡实战

最好跟着我上一篇Eureka做一遍,或者拿我上一篇最后给的代码跑一跑,因为这里还会用到之前代码

第一步:启动两个pay模块,我们只有一个,所以需要进行一些配置,变成启动两个pay
在这里插入图片描述
新增下面内容,加个port就能知道是哪个端口启动的
在这里插入图片描述
四步配置好pay 8082
在这里插入图片描述
这样就多了一个端口可以同时访问pay服务
在这里插入图片描述

输入localhost:8761,如下
在这里插入图片描述

在这里插入图片描述
说明两个pay服务都能正常启动

第二步:配置负载均衡
由于是customer调用pay,即用户使用支付服务,所以customer要配置负载均衡策略,从而选定哪个服务

注意:spring-cloud-starter-netflix-eureka-client 已经默认集成了 spring-cloud-starter-netflix-ribbon,如果两个还一起导入会产生冲突

在eureka_client_customer模块的启动类中加上@LoadBalanced注解
在这里插入图片描述
Ribbon不用再用繁琐的获取服务规则了,只要加上服务名payClient就会自动解析成对应地址
在这里插入图片描述
不能用下划线,所以client_customer也写成customer,下面把不用的部分注释,用payClient服务名,@LoadBalanced负载均衡会自动解析服务名变成对应的地址
在这里插入图片描述

重启所有服务,使得5个服务都能在Eureka看到
在这里插入图片描述
输入localhost:8080/customer

在这里插入图片描述
不断刷新8081->8082->8081->8082,负载均衡默认的是轮巡的方式,如果有三个pay,那么就会顺序且循环访问三个pay服务

二、负载均衡策略

如果想自定义负载均衡策略呢?首先我们先了解负载均衡策略有哪些,如下,有很多,但常用就四种
在这里插入图片描述
四种常用负载均衡策略
1、RandomRule:随机策略
2、RoundRobbinRule:轮巡策略(默认
3、WeightResponseTimeRule:默认采用轮巡,后续根据服务响应时间分配权重,比如响应快的就多分配些请求
4、BestAvailableRule:根据被调用方并发数最小去分配

配置负载均衡策略也有两种方式(重点)
1、采用注解形式
在这里插入图片描述

@Bean
public IRule robbinRule(){
   return new RandomRule();
}

重启ClientCustomerApplication,策略就变成随机负载均衡,然后刷新页面可能尾号就是8081->8081->8082>8082->8081无规律随机调用服务

2、采用在yml文件中配置推荐
先注释之前的配置策略方式
在这里插入图片描述

此处我们给customer的yml文件配置,再重启,只要它能变回轮巡就说明配置成功,这里因为在本地所有响应时间基本没差别,就会采用轮巡

payClient:  #指定服务名称
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule

然后我们每次刷新都会变8081->8082->8081->8082->8081…

配置过程中可能遇到的问题与解决方法

参考视频:https://www.bilibili.com/video/BV15e411W75G

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小样x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值