SpringBoot & SpringCloud 使用Nacos注册中心和配置中心说明
版本
由于在 Spring 架构中版本较多,而且 SpringBoot 与 Spring Cloud 版本需要对应使用,且与 Spring Boot 或 Spring Cloud 搭配使用的一些框架(如:alibaba)也有较强的版本匹配关系,所以配置项目所使用的环境版本说明是必要的。
- Java:zulu11.45.27-ca-jdk11.0.10-win_x64
- SpringBoot:2.4.6
- SpringCloud:2020.0.2
- com.alibaba:fastjson:1.2.75
- com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2021.1
- com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2021.1
- Nacos:2.0.0
项目的开发和部署结构
整个项目大概就是如下图的样子,由Nacos统一配置和管理SpringBoot应用服务(包括网关、权限服务接口、应用服务接口等)
Nacos 相关配置
启动 Nacos
在开发环境中使用标准的单例模式启动
startup.cmd -m standalone
Nacos 注册发现服务配置
依赖
在 pom 文件中添加对Nacos发现服务的支持。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.1</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
如果要使用 bootstrap.yml 配置参数配置文件,测需要引入以下依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
配置
在万能的万维网上,配置的形式千奇百怪;有需要添加启用配置的,有需要再Application里添加启用注解的;这些也许是不同版本造成的。
但在SpringBoot 2.4.6和SpringCloud 2020.0.2中,只需要引入依赖,并配置Nacos的地址和端口就可以了,但一定要注意版本匹配,这里用到的spring-cloud-starter-alibaba-nacos-discovery是2021.1版本。
bootstrap.yml:
spring:
profiles:
active: dev
application:
name: gateway #定义应用名称
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
指定 Nacos 注册服务时的IP
服务器或PC有多个网卡(包括虚拟网卡),由于网卡的顺序不同,可能会导致服务启动后在注册服务时,服务的 IP 地址无法与 Nacos 通信,这时就需要指定注册服务时的 IP 地址。
有三种方法
- 指定 IP 地址
spring.cloud.nacos.discovery.ip = 10.2.11.11
spring.cloud.nacos.discovery.port = 9090
- 指定 IP 网段
spring.cloud.inetutils.preferred-networks = 10.2.11
- 连接时忽略网卡
spring.cloud.inetutils.ignored-interfaces[0]=eth0 # 忽略网卡,eth0
spring.cloud.inetutils.ignored-interfaces=eth.* # 忽略网卡,eth.*,正则表达式
Nacos 自动配置服务配置
依赖
在 pom 文件中添加对Nacos配置服务的支持。
<!-- 在上面一节已经提到过,但这里还需要强调一下,一定要引入下面这条 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.1</version>
</dependency>
【注意】这里一定要引入 spring-cloud-starter-bootstrap,否则项目中 bootstrap.yml 是不起作用的。
配置
spring:
profiles:
active: dev
application:
name: gateway #定义应用名称
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
Nacos上创建配置信息
启动Nacos服务后,通过 http://localhost:8848/nacos 访问,在【配置管理】 --> 【配置列表】中点击“+”加号,添加配置。
在 【Data ID】中输入配置的名称,名称的命名规则为${application.name}-${profiles.active}.${扩展名}
;
【配置格式】选在 YAML 或 Properties,Nacos配置中心目前仅支持这两种格式;
输入【配置内容】,点击发布。
- 0
- 0
-
分享