一、 Ribbon客户端负载均衡
1. 负载均衡介绍
① LB,即负载均衡(Load Balance),负载均衡是微服务架构中经常使用的一种技术。负载均衡是我们处理高并发、缓解网络压力和进行服务端扩容的重要手段之一,简单的说就是将用户的请求平摊的分配到多个服务上,从而实现系统的高可用性集群。
② 服务端的负载均衡
实现负债均衡的硬件:LVS(Linux Virtual Server)、F5、A10
③ 客户端的负载均衡
在客户端负载均衡中,每个客户端服务都有一份自己要访问的服务端清单,这些清单统统都是从Eureka服务注册中心获取的。(排队做核算检测)
而在服务端负载均衡中,只要负载均衡器维护一份服务端列表(去医院就诊-导诊台)
2. Ribbon负载均衡实现流程
实现过程:在客户端中注册/配置Ribbon负载均衡器,Riboon就可以从EurekaServer中获取微服务列表,根据Ribbon的负载均衡算法(默认是轮循算法)去调用微服务。
3. Ribbon客户端负载均衡实现步骤
需求:在consumer消费者微服务中实现Ribbon的负载均衡
① 修改pom.xml文件,引入Eureka和Ribbon的依赖
② 配置yml文件
需要从Eureka中获取服务列表
③ 优化RestTemplate的访问
A、让RestTemplate具有负载均衡的功能/开启负载均衡
B、把原有的ip+port的访问方式修改为服务名称(提供者yml中的spring.application.name值)的访问方式
可以通过注解@LoadBalanced来实现以上的两个功能。
在获取RestTemplate对象的配置类中添加@LoadBalanced注解即可:
④ 消费者微服务中修改访问url路径为提供者的应用名称
提供者yml中配置的应用名称:
⑤ 修改消费者启动类,加上Eureka客户端标识
⑥ 启动服务
启动顺序:
⑦ 测试
注意:Ribbon的客户端实现负载均衡需要服务端提供者实现集群
4. 微服务提供者的集群测试客户端的负载均衡
实现微服务提供者的集群,Ribbon客户端的负载均衡就会看到效果
需求:创建服务提供者的集群,之前有一个8001的提供者,还需要创建一个8002的提供者实现集群
① 创建一个8002的服务提供者,和8001一致
② 8002的业务和8001完全一致,除了yml的配置文件需要修改:
A、修改端口号为8002
B、为了区分负载均衡访问的是集群中的哪个服务,所以通过数据库来进行区分
修改8002的数据库为springcloude-db2
C、服务名称需要同一个集群中各服务的名称要一致,所以8001和8002的服务名称都为ms-product
③ 启动服务测试
A、先启动6001、6002注册中心集群服务
B、再启动8001、8002服务提供者集群,启动后会注册到6001、6002注册中心中
C、测试8001、8002是否能正常访问到数据
D、再启动80消费者负载均衡服务