Ribbon 负载均衡
实现效果:在多个服务提供者之间获取数据,实现负载均衡
项目总的目录结构如下:
项目名称:eureka-consumer
步骤如下:
1、引入netflix-eureka-clinet依赖、Spring Web依赖、Ribbon依赖
2、修改配置文件为yml形式
3、主要配置
//配置类
//将RibbonConfig标注为配置类
@Configuration
public class MyConfig {
//注入restTemplate()方法,返回的RestTemplate对象
@Bean
//使RestTemplate具备了负载均衡的能力
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder builder){
return builder.build();
}
}
//Controller层
@RestController
public class TestController {
@Autowired
private RestTemplate rs;
@RequestMapping("/sayHi")
public String sayHi(){
//发送请求/交易
return rs.getForObject("http://eureka-provider/sayHello",String.class);
}
}
server:
port: 7003
spring:
application:
name: eureka-consumer #注意consumer的改写
eureka:
client:
service-url:
defaultZone: http://localhost:7000/eureka/
instance:
hostname: localhost #主机地址
四、在启动类中加入@EnableEurekaClien
将项目启动起来
第一次访问的地址
刷新后第二次的访问地址
实例总结:
1、两个service-provider实例名称要一致。
2、消费者pom中引入starter-netflix-ribbon依赖。
3、重构RestTemplate模板类,机上@LoadBalanced注解。
4、使用RestTrmplate模板类的 getForObject(“http://eureka-provider/sayHello”,String.class);方法。