《SpringCloud》笔记六:负载均衡——Ribbon组件(2)

所有课程的学习及相关资料都是源自b站黑马程序员
感谢黑马程序员给予我们新手的无私帮助,感谢!!!
黑马程序员-----yyds

一、负载均衡策略

我们接着上期的笔记继续解释。
上期回顾

在这里插入图片描述

下面的是IRule的类继承关系图

在这里插入图片描述
还记得我上期说过,Ribbon的默认负载均衡实现是ZoneAvoidanceRule(中文硬核翻译一下)

在这里插入图片描述

我们现在要详细说明下这个规则(说不定就和区域这两个字有关系呢)。

我们看看ZoneAvoidanceRule的父类是PredicateBasedRule,emmm,好像我还不是没通过,我们再看父类的父类是ClientConfigEnableRoundRobinRule,后缀倒是有一点轮询的味道,那说明这个类可能是包含轮询的那种感觉,只不过这个类可能将轮询的功能加强一些。可见ZoneAvoidanceRule类采用的规则肯定和轮询有某些关联,甚至可以说是基本上一致。

那好,这个我们就暂且先了解到这里,下面我放一张表(我们重点关注ZoneAvoidanceRule

在这里插入图片描述

显而易见,Ribbon的默认机制就是有区域轮询的意思,举个例子,我们有两个机房A和B,机房A里面有服务C的实例1和实例2,机房B里面有服务C的实例3和实例4,现在如果我们访问服务C的实例,分下面两种情况:

  • 没有配置优先访问哪个区域的时候,我们默认所有的机房都是处于同一个区域,程序对同一个区域的实例做轮询操作的负载均衡
  • 如果配置了优先访问哪个区域的时候,我们认为每一个机房都是不同的区域,程序会先看看你配置了要访问哪个区域,然后只对该区域内的实例进行轮询操作负载均衡,不访问其他区域的相同服务实例。

先暂时这个理解,应该也不难理解叭。

现在的问题是,我不想要这种默认的负载均衡规则, 我想换一个,那要怎么实现呢?
下面介绍两种方法来实现:

①、方法一: 在order-service代码的OrderApplication.java内加入如下的代码

在这里插入图片描述

需要注意的是,这种方法是全局通用的,也就是你order-service无论调用哪个服务,都是采用的是自定义的规则

②、方法二: 在order-service的application.yml增加如下配置

在这里插入图片描述

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

而和上面不一样的是,这个只针对userservice服务的实例,也就是说,只有当order-service访问userservice服务实例的时候才会使用你自定义的规则,而访问其他服务实例的时候仍然使用的默认规则。

二、懒加载与饥饿加载

老方式,先了解这两种加载的概念。

懒加载的定义:
       懒加载(Load On Demand)是一种独特而又强大的数据获取方法,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用(百度百科,大概意思)

懒加载的定义:
       饥饿加载其实就是一开始既在访问的同时也一并加载所需要的资源(自创的哈哈哈)

那为什么要使用这两种方式呢。
其实Ribbon的默认加载方式是懒加载(第一次加载后会变快,因为它会缓存数据),而懒加载会引发一个问题,就是它会在第一次请求数据的时候,响应时间很长,这个时候,如果你的电脑性能和网络不理想的话,那么这第一次请求可能就会让你挂了(也就是请求超时)
所以,如果我们可以把懒加载机制,更换为饥饿加载机制,或许页面数据的响应对于那些电脑性能或者网络有差异者,或许不为一种提升用户体验的方式。

在这里插入图片描述

那要怎么切换加载机制呢。

在这里插入图片描述
修改order-service的application.yml文件

在这里插入图片描述
最后总结一波对于Ribbon的学习:

在这里插入图片描述

这期笔记就到这里,求个三连,谢谢!
共勉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凌晨小街

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

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

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

打赏作者

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

抵扣说明:

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

余额充值