吐血整理nacos 作为配置中心和注册中心
- 环境版本
- nacos 版本
- nacos启动
- 单机模式启动
- 配置数据库
- Spring cloud 连接注册Nacos
- 配置中心
- 导入依赖
- 注册中心
环境版本
SpringBoot版本 | SpringCloud版本 | cloud Alibaba版本 |
---|---|---|
2.6.13 | 2021.0.5 | 2021.0.5.0 |
参照依据
spring-cloud-alibab 对应版本说明
nacos 版本
nacos-server-2.4.2
nacos启动
单机模式启动
下载解压之后
nacos 启动需要注意一个点,Nacos2 之后的版本启动时都是默认集群模式,没有集群环境的话,启动会失败!!
如果我们需要单机启动的话,方法有两种。
- 需要修改 bin/startup.cmd 文件。set MODE=“standalone”
- 启动时,添加参数。 进入cmd环境。
startup.cmd -m standalone
配置数据库
- 执行 /conf/mysql-schema.sql 数据库脚本
- 修改 /conf/application.properties 的数据库连接
Spring cloud 连接注册Nacos
父pom依赖
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.version>
<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
<spring-cloud.version>2021.0.5</spring-cloud.version>
</properties>
<dependencyManagement>
<!-- SpringCloud 微服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringCloud Alibaba 微服务 -->
<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>
配置中心
这个地方巨坑,一堆注意的点。
导入依赖
<!-- 配置中心依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 加上这个才可以启动 识别bootstrap.yml 作为启动配置文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-cloud-starter-bootstrap 这个依赖注意
整个项目一目了然,User 类读取n=Nacos上的配置文件,在定义一个接口进行输出内容。我也就不过多解释了。
- 配置spring cloud 不同环境配置注意点
bootstrap.yml
bootstrap-dev.ymlspring: profiles: active: dev
不能使用 spring.profiles.active = dev 了server: port: 8080 spring: application: name: my-web config: activate: on-profile: dev # 这个方式行不通,用 ↑ 的 # profiles: # active: dev cloud: nacos: # 服务配置方面 config: # 配置中心地址 server-addr: 192.168.60.72:8848 # 命名空间 namespace: myDev # 文件格式 file-extension: yaml
- namespace 填写的是命名空间的ID不是名称
在 nacos 上新建配置文件的 Data Id 不能随意乱写
,根据官方文档是由这几部分组成.${prefix}-${spring.profiles.active}.${file-extension}
- prefix :注册在 nacos 上的服务名 spring.application.name 的值
- spring.profiles.active 或(
spring.config.activate.on-profile
) :配置的开发环境是开发还是测试,比如 dev,test,prod 这个最好写上 - prefix 和 spring.profiles.active 之间有一个 - 连接符,如果不写 spring.profiles.active 的话那么直接 prefix 和 file-extension 拼接,没有连接符
- file-extension :这个和你选择的扩展名以及本地扩展名这三个值一致
- 连接配置中心的参数需要写在 bootstrap 里面,写在 application 里面无法连接配置中心
- bootstrap 比 application 先执行,且内容无法覆盖(具体差异网上说的挺详细)
注册中心
将服务注册到Nacos就比较简单了。
依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
bootstrap-dev.yml
server:
port: 8080
spring:
application:
name: lql-web
config:
activate:
on-profile: dev
# 这个方式行不通,,用 ↑ 的
# profiles:
# active: dev
cloud:
nacos:
# # 服务配置方面
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 命名空间
namespace: myDev
# 文件格式
file-extension: yaml
# 服务注册方面
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
namespace: myDev
启动就可以了。。