微服务:3-1-1 服务调用-Ribbon

1、Ribbon概述

1、Ribbon是什么?

ribbon1

总结:Ribbon其实就是一个软负载均衡的客户端组件

2、负载均衡

1、负载均衡是什么?
ribbon2

2、两种负载均衡:集中式LB和进程内LB
ribbon3

2、负载均衡演示

1、架构说明

Ribbon其实就是一个软负载均衡的客户端组件,可以和其他所需请求的客户端结合使用,比如和Eureka结合
(最新的Eureka依赖中,已经整合了Ribbon,不用额外引入Ribbon依赖,所以在Eureka篇没有显示引入Ribbon也可以实现负载均衡)

ribbon4

Ribbon在工作时分成两步:
第一步 先选择EurekaServer,它优先选择同一个区域内负载较少的server
第二步 根据用户指定的策略,在server中取到的服务注册列表中选择一个地址

其中Ribbon提供了多种策略:如轮询、随机和根据响应时间加权

3、Ribbon核心组件IRule

1、IRule接口

IRule:根据特定算法从服务列表中选取一个要访问的服务
Ribbon自带的7中负载均衡方法:
ribbon5
ribbon6

2、替换负载均衡算法

比如,当前项目的负载均衡算法是默认的轮询,想要换成随机,该如何操作?
1、修改cloud-consumer-order80

2、注意配置细节
将负载均衡算配置成随机的配置类,不能放在注解@ComponentScan所扫描的当前包以及子包下,
ribbon7

但是当前项目的入口主启动类,由注解@SpringBootApplication标注,@SpringBootApplication中包含注解@ComponentScan,所以当前整个项目都属@ComponentScan的扫描范围,
ribbon8

则我们需要新建一个配置包和@SpringBootApplication所在主启动类处于同级位置

3、新建package:com.atguigu.myrule
ribbon9

4、com.atguigu.myrule包下新建MySelfRule规则类,将负载均衡算法换成随机
ribbon10

5、主启动类添加RibbonClient
ribbon11
configuration指向我们自定义的配置类MySelfRule

6、测试
ribbon12
测试后发现消费者端随机访问服务提供端8001和8002

4、负载均衡算法

1、原理

负载均衡轮询原理:
ribbon13