本文主要是介绍Spring Cloud之注册中心Nacos的使用详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《SpringCloud之注册中心Nacos的使用详解》本文介绍SpringCloudAlibaba中的Nacos组件,对比了Nacos与Eureka的区别,展示了如何在项目中引入SpringClo...
Naacwww.chinasem.cnos
Nacos是Spring Cloud Alibaba的组件, Spring Cloud Alibaba遵循Spring Cloud中定义的服务注册, 服务发现规范. 因此使⽤Nacos和使⽤Eureka对于微服务来说,并没有太⼤区别.
主要差异在于:
• Eureka需要⾃⼰搭建⼀个服务, Nacos不⽤⾃⼰搭建服务, 组件已经准备好了, 只需启动即可.
• 对应依赖和配置不同
服务注册/服务发现
Nacos的服务注册和服务发现代码⼀样。
引⼊Spring Cloud Alibaba依赖
在⽗⼯程的pom⽂件中的 <dependencyManagement> 中引⼊Spring Cloud Alibaba的依赖:
<properties>
<spring-cloud-alibaba.version>2022.0.0.0-RC2</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencyManagement>注意: Spring Boot 和Spring Cloud的版本是有⼀定对应关系的. Spring Cloud Alibaba也遵循
Spring Cloud 的标准, 在引⼊依赖时, ⼀定要确认各个版本的对应关系.
Spring Cloud Alibaba 和Springjavascript Cloud版本对应关系, 参考官⽅⽂档:-》链接
版本在⼀定范围内可以⾃由选择.

引入Nacos依赖
在order-service和product-service中引⼊nacos依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>引入Load Balance依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>配置Nacos地址
| 配置项 | Key | 默认值 | 说明 |
| 服务端地址 | spring.cloud.nacos.discovery. server-addr | 无 | Nacos Server 启动监听的ip地址和端⼝ |
spring:
application:
name: product-service
cloud:
nacos:
discovery:
sydwyOmuerver-addr: 47.98.109.138:8848服务端调用
1. 修改IP为项⽬名
package order.service;
import order.mapper.OrderMapper;
import order.model.OrderInfo;
import order.model.ProductInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;
public OrderInfo selectOrderById(Integer orderId){
OrderInfo orderInfo = orderMapper.selectOrderById(orderId);
String url = "http://product-service/product/"+orderInfo.getProductId();
ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);
orderInfo.setProductInfo(productInfo);
return orderInfo;
}
}2. 为restTemplate添加负载均衡注解 @LoadBalanced
package order.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class BeanConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}启动服务
启动两个服务, 观察Nacos的管理界⾯, 发现order-service 和product-service 都注册在Nacos上了。

测试负载均衡

多次访问“http://127.0.0.1:8080/order/1”,可以看到,每个服务实例接受的请求数量都差不多:



到此这篇关于Spring Cloud之注册中心之Nacos的使用的文章就介绍到这了,更多相关Spring Cloud注册中心Nacos内容请搜索China编程android(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于Spring Cloud之注册中心Nacos的使用详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!