使用 nacos 搭建注册中心及配置中心
本文为博主原创,转载请注明出处:
在分布式微服务框架中,现在都流行使用 nacos 作为分布式框架的注册中心与配置中心。当我们搭建一套spring boot 框架的时候,默认会将配置文件
放在 resources 的配置目录下有bootstrap.yml 及application-dev.properties 配置文件进行管理,包括数据库配置,端口配置等等。
现在使用 nacos 便可实现服务注册 与 配置管理的功能。
nacos 提供的中文网址连接如下:https://nacos.io/zh-cn/docs/quick-start-spring-boot.html
具体步骤如下:
1.在项目中引入nacos 以及spring boot web启动的相关的依赖:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> <relativePath/> </parent> <properties> <java.version>1.8</java.version> <spring-boot.version>2.2.8.RELEASE</spring-boot.version> <spring-cloud.version>2.2.2.RELEASE</spring-cloud.version> <spring-nacos.version>2.2.1.RELEASE</spring-nacos.version> </properties> <dependencies> <!--web启动--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring-boot.version}</version> </dependency> <!--nacos-config--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${spring-nacos.version}</version> </dependency> <!--nacos-discovery--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>${spring-nacos.version}</version> </dependency> </dependencies>
2.在项目配置 bootstrap.yml 文件中配置配置中心:
其中有一个默认组group的属性,如果不配其默认值为 DEFAULT_GROUP
spring: application: # 服务名称尽量用-,不要用_,不要用特殊字符 name: test2 cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: yaml
3.本地安装并启动 nacos
nacos 默认的用户名和密码都为 nacos 。 在nacos 管理台进行配置中心的配置:
配置管理 ---〉配置列表 ---- 〉点击加号 进行创建
点击加号进行配置
dataId 为项目框架中 bootstrap.yml 中的 spring.application.name 的配置值。
之于项目中 为什么要配置 bootstrap.yml 中配置application.name 以及项目启动如何匹配对应的配置文件列表,其缘由在nacos 中文网址给了说明:
进行启动,通过观察项目启动的端口号判断是否正确使用配置中心的配置,若未正确加载,则项目启动成功的端口号则为默认的8080,
若正确加载,则项目启动的端口号为配置中心的端口号:
4.配置中心使用命名空间区分环境
spring boot 项目中,常使用 application-dev.properties, application-test.properties, application-prd.properties等方式指定不同环境下的配置文件。
nacos配置中心可以创建命名空间,区分不同的环境类型。
创建之后,会在配置列表看到 dev 的 tab 列表
在列表中创建对应的配置,我这边创建的简单的配置如下:
在项目代码的配置文件中指定命名空间以及 环境类型就可加载使用,在bootstrap.yaml中配置如下:
namespace 的值为nacos 中命名空间的ID的值
spring: application: # 服务名称尽量用-,不要用_,不要用特殊字符 name: test1 profiles: active: dev cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: yaml group: DEFAULT_GROUP namespace: 9f471483-5467-4077-81ae-b7ddb6cf2248
本地项目启动加载配置,通过启动日志观察服务端口便可判断配置是否加载:
注意事项:
1.在配置过程中,需要注意 pom中的 spring-boot-starter-parent 与 spring-boot-starter-web 两者的版本号相差不能太大,相差太大,容易导致启动报错,某些类 ClassNotFoundException等
2.需要在项目的配置文件中指定项目名称