五、使用Ribbon实现客户端侧负载均衡
简介
为Ribbon配置服务提供者地址列表后Ribbon可以基于某种负载均衡算法,自动的帮服务消费者去请求,如轮询、随机等,也可以自定义负载均衡算法。
下图是Ribbon与Eureka联用的框架图
为服务消费者整合Ribbon
为前文编写的电影微服务整合Ribbon
1.复制项目microservice-simple-consumer-movie,将ArtifactId修改为microservice-simple-consumer-movie-ribbon
2.引入Ribbon依赖,依赖如下
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-ribbon -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
3.为RestTemplate添加@LoadBalanced 注解
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
4.将Controller代码修改如下
package com.lzy.cloud.microservicesimpleconsumermovie.controller;
import com.lzy.cloud.microservicesimpleconsumermovie.pojo.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.