开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第二阶段:基于 Ribbon 实现负载均衡】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/684/detail/11866
基于 Ribbon 实现负载均衡
内容介绍:
一、 Ribbon 的介绍
二、调整 Ribbon 的负载均衡策略
一、Ribbon 的介绍
1、代码实操
上节我们以自定义代码的形式实现了负载均衡效果,但是所用代码并不是特别完美,当前的代码只能以随机的形式实现负载均衡,但真正的负载均衡是有很多策略的。
如何基于 Ribbon 实现负载均衡。
首先学习何为 Ribbon ,它是 Spring Cloud 的一个组件,它可以让我们使用一个组件就能轻松搞定负载均衡。
通过代码的形式实战
第一步:在 RestTemplate 的生成方法上添加 @LoadBalanced 注解。
第二步:修改服务调用的地方,其原来使用的是实例的地址和端口,而现在直接改成了 nacos 的服务地址名称,即 server-product 。打开 OrderApplication ,找到 resttemplate 的方法加一个注解,在 @Bean 下方输入 @LoadBalanced 。
2、修改调用
然后第二步修改调用方式,调用方式直接采用 server-product 即可,将其替换到 “http://” +instance.getHost() +”:” + instance.getPort ()+”/product/” +pid
中,将 //调用商品微服务,查询商品信息 下方的代码删除,将 //下单后缀改为 --ribbon负载均衡。
3、实验验证
然后重新启动 OrderApplication 观察效果, ribbon 默认的负载均衡策略是轮询。
接下来访问订单微服务,打开商品把两个里面的日志全部清空,观察其中的一个进行访问,在标签页刷新发现第一个请求到了8081上,继续刷新请求便到了8082上,继续实验可得确实是负载均衡并且为轮询的策略。
二、调整 Ribbon 的负载均衡策略
1、 ribbon 七大负载均衡策略
如何调整 Ribbon 的负载均衡的策略
首先了解 ribbon 支持的负载均衡策略有哪些。
Ribbon 内置了多种负载均衡策略,内部负载均衡的顶级接口为 com. Netflix .loadbalancer .IRule 下面介绍几个最常用的负载均衡策略,
RoundRobinRule RandomRule 和 BestAvailableRule,然后我们来学习如何对他们进行调整。
2、 RandomRule 的演示
以 RandomRule 为例进行调整,我们只需修改一下配置即可:
Service-product :#调用的提供者的名称
Ribbon:
NFLoadBalancerRuleClassName:com.netflIx. Loadalancer. RandomRule
找到订单微服务的配置文件,在代码的最下方进行配置,输入 Service-product :
#调用的提供者的名称
Ribbon:
NFLoadBalancerRuleClassName:com.netflIx. Loadalancer. RandomRule
要注意 Service-product 是服务提供者的服务名称,Ribbon:
NFLoadBalancerRuleClassName 是固定的,
com.netflIx. Loadalancer. RandomRule 是具体的负载均衡策略的名称。然后重新启动来验证效果。
打开商品把两个里面的日志全部清空,观察其中的一个进行访问,在标签页刷新发现两个服务提供者的选取是随机的,并无一定规律,由此我们的负载均衡调整策略就完成了,我们可以按照这种方式依次对上面7中负载均衡策略做一个演示。