在微服务的架构中,发现、配置和管理微服务非常重要,Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。具有服务发现和服务健康监测、动态配置服务、动态 DNS 服务,服务及其元数据管理等主要特性。
在Spring Cloud中集成Nacos的配置管理以及服务发现非常简单,下面以一个3节点集群的Nacos为例,在Spring Cloud中集成Nacos。
首先Spring Cloud Alibaba对于配套的组件是版本要求的,具体的版本对应如下:
Spring Cloud Alibaba Version | Spring Cloud Version | Spring Boot Version |
2021.0.4.0* | Spring Cloud 2021.0.4 | 2.6.11 |
2021.0.1.0 | Spring Cloud 2021.0.1 | 2.6.3 |
2021.1 | Spring Cloud 2020.0.1 | 2.4.2 |
这里以2021.0.1.0为例。
首先准备一个nacos的集群(在一台服务器通过不同的端口来实现)
集群地址:172.18.0.32:8849,172.18.0.32:8851,172.18.0.32:8849
打开宇宙第三的IDE IntelliJ IDEA创建一个Maven的项目,创建3个微服务,分别是BookService,UserService和OrderService。
在父项目管理一下版本。
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
org.microservice
ali
pom
1.0.0
BookService
UserService
OrderService
Entity
17
17
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-web
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud
spring-cloud-starter-bootstrap
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2021.0.1.0
pom
import
org.springframework.boot
spring-boot-starter-parent
2.6.3
pom
import
org.springframework.cloud
spring-cloud-dependencies
2021.0.1
pom
import
添加spring-cloud-starter-alibaba-nacos-config依赖,因为每个子模块都需要用到,在父项目的pom.xml中添加。在2.4以后的版本需要添加spring-cloud-starter-bootstrap的依赖,否则读取不到bootstrap.yaml的配置。
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
org.springframework.cloud
spring-cloud-starter-bootstrap
在bootstrap.yaml配置nacos的信息
spring:
application:
name: bookService
cloud:
nacos:
config:
server-addr: 172.18.0.32:8849,172.18.0.32:8851,172.18.0.32:8849
namespace: 8d53a658-0e97-468e-b901-42291996b381
refresh-enabled: true
file-extension: yaml
enabled: true
name: BookService
group: dev
其中spring.application.name必须配置,因为nacos中的配置的dataId的组成规则是${prefix}-${spring.profiles.active}.${file-extension}
比如我们以UserService为例,做多环境配置
UserService多环境
启动的时候配置为pro
那么就会自动读取bootstrap-pro.yaml的配置,在Nacos配置对应的配置文件,配置文件中,把当前的服务注册到Nacos中,把dev的环境的server.port配置为8637,pro的配置为8837,下面来测试一下是否正常。
其中dev的配置
pro的配置
配置为dev
配置为pro
在nacos的pro环境配置新增userName和password的配置,在Controller新增一个接口,通过指定配置的key,获取配置的值
通过注入的方式使用
当前的版本通过@Value进行注入,@NacosValue已经不支持
下面以OrderService服务中,根据订单的id获取订单的信息,订单中包含是哪个用户借阅了什么图书。
在父项目中新增依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
在OrderService中添加依赖
org.springframework.cloud
spring-cloud-loadbalancer
OrderService获取订单的api
注入RestTemplate
BookService的bookInfo
UserService的userInfo
把3个服务都启动。
服务注册到了Nacos
下面来测试一下。
页面更新:2024-04-25
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号