本文主要是介绍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的使用详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!