ribbo:是Netflix公司开源的一个负载均衡的项目,是一个客户端负载均衡器,运行在客户端上。
实际运用案例(基于springcloud入门案例):
一、新建Module:springcloud-consumer-ribbon
1:添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!-- eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
2:修改配置文件(在src/main/resources下创建application.yml文件):
①配置端口号:
server:
port: 6001
②配置注册中心eureka:
3:启动类(App):
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
3、控制器(UserController):
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/hi")
public Map<String,Object> hello(){
return restTemplate.getForObject("http://provider-one/hello", Map.class);
}
provider-one:是你提供者配置文件中spring.application.name的值
hello:是你提供者的提供的方法名字。
提供的负载均衡算法:
修改负载均衡算法(2种):
添加一个方法:
IRule loadBalanceRule(){
return new RandomRule();
}
修改配置文件:
MICRO-SERVICE:服务名字
ribbon:
NFLoadBanlanceRuleClassName:
实现负载均衡:
启动多个提供者(端口号不一致)