LoadBalancer学习笔记,因为不太常用Cloud,导致经常忘记,特地做个笔记,防止遗忘,因为博主没有带自己电脑,本机上也无任何编程环境、软件,只能参考网上资料+回忆,侵必删。
一.LoadBalancer简介
Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器, 用来替代Ribbon。
RestTemplate
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。默认情况下,RestTemplate默认依赖jdk的HTTP连接工具。
使用LoadBalancer可以简单的做到负载均衡。
二.使用
①引入依赖
<!-- LoadBalancer -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!-- 提供了RestTemplate支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- nacos服务注册与发现 需要移除ribbon支持-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
注意: nacos-discovery中引入了ribbon,需要移除ribbon的包
②在配置类中加@LoadBalanced注解
@Configuration
public class LoadBalancedConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
③controller里使用RestTemplate
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = "/test/{id}")
public R findOrderByUserId(@PathVariable("id") Integer id) {
String url = "http://provider/order/findOrderByUserId/"+id;
String result = restTemplate.getForObject(url,String.class);
return result;
}
}