SpringCloud Alibaba微服务中Nacos注册服务负载均衡的实现
文章目录
- 一。项目结构
- 二。编码实现
- 三。测试
一。项目结构
以下介绍SpringCloud Alibaba负载均衡的实现过程,本示例项目结构:
- provider_9011:9011端口启动的服务提供者
- provider_9012:9012端口启动的服务提供者
- consumer_80:服务消费者
二。编码实现
1.在三个子模块都导入nacos的依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
打开maven依赖我们可以看见,Nacos其实是集成了Netflix的Ribbon,Ribbon我们是比较熟悉的了,它在SpringCloud微服务中用来实现负载均衡,主要是用RestTemplate类来去实现。
2.application.yml配置文件配置如下所示:
consumer_80:
server:
port: 80
spring:
application:
name: consumer-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
management:
endpoint:
web:
expsoure:
include: '*'
provider_9011:
server:
port: 9011
spring:
application:
name: provider-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
management:
endpoint:
web:
expsoure:
include: '*'
provider_9012:
server:
port: 9012
spring:
application:
name: provider-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
management:
endpoint:
web:
expsoure:
include: '*'
3.两个服务提供者provider_9011和provider_9012控制端代码一致,如下所示:
@RestController()
public class ProviderController {
@Value("${server.port}")
private String server_port;
@GetMapping("getInfo")
public String getInfo(){
return "这是 "+server_port+" 服务提供者在提供服务!!!";
}
}
4.消费者consumer_80调用服务提供者模块接口代码如下:
@Service
public class ProviderTemplate {
@Autowired
private RestTemplate restTemplate;
//调用提供者模块接口
public String getInfo(){
return restTemplate.getForObject("http://provider-service/getInfo", String.class);
}
}
6.为了实现负载均衡,需要在消费者启动类代码中注入RestTemplate,如下所示:
@SpringBootApplication
@EnableDiscoveryClient
public class Consumer80Application {
public static void main(String[] args) {
SpringApplication.run(Consumer80Application.class, args);
}
//注入ribbon调用类RestTemplate
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
}
(注:@Bean的作用是将RestTemplate注入到spring容器中以供调用,@LoadBalanced的作用是开启负载均衡,默认是轮询机制)
三。测试
1.先启动provider_9011,provider_9012,再启动consumer_80:
2.启动成功后,在nacos中可以看见服务注册信息:
3.访问服务提供者provider_9011:
4.访问服务提供者provider_9012:
5.访问服务提供者consumer_80,多次刷新页面发现是以轮询的方式分别访问provider_9011与provider_9012:
至此,SpringCloud Alibaba微服务中Nacos注册服务负载均衡已经实现
还没有评论,来说两句吧...