什么是Nacos
Nacos是Spring Cloud Alibaba框架下的一个组件。一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。通俗一点来说就是随着项目应用的不断增多,实现应用之间的通信、管理、和配置。
Nacos主要就是分为两个部分:注册中心与配置中心。
注册中心:其实就是其通讯录的作用,通过设置应用名字可以让应用之间相互认识。认识了之后可以进行健康检查(监控应用的服务状态)、路由转发和远程调用其他应用等功能。
配置中心:动态修改线上的配置。【比如我们单体的springboot项目,修改了配置项(例如数据库连接等配置)需要重新部署项目才能生效。但是使用了Nacos之后,Nacos服务器会发布配置 客户端接收,可以动态地变更配置项。】
本次博客使用的是Nacos2.2.1版本的。接下来会介绍如何安装启动Nacos服务器,以及在代码里面配置Nacos。
下载
官方文档:https://github.com/alibaba/spring-cloud-alibaba/blob/2022.x/README-zh.md
Nacos和SpringBoot SpringCloud的版本说明:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
(Nacos不同版本兼容的SpringBoot SpringCloud的版本是不一样的)
下载地址:https://github.com/alibaba/nacos/releases
根据环境不同进行下载,下载之后解压到本地即可(和Redis的使用方法一致)
开启鉴权 启动之前配置token.secret.key(2.1.0版本之前不用)
找到安装目录下的conf目录下的application.properties文件(这里面可以修改端口等)
ctrl+f搜索: nacos.core.auth.plugin.nacos.token.secret.key(这个其实有点像登录功能里面去使用JWT加密用户信息一样 提高nacos的安全性 )
使用Base64去编码一下这个key 字符串你可以自己任意设置 但是要32位
生成之后把结果复制到配置文件里面(为了你忘记 你可以把你的字符串也写到配置文件里面(注释掉))
启动Nacos服务
我的电脑是windows 所以我只演示windows下的启动方法
找到安装目录下的bin目录 启动命令行(在目录下输入cmd 按回车)输入命令
startup.cmd -m standalone
启动成功后可以访问nacos的控制台 http://localhost:8848/nacos
控制台页面 用户名:nacos 密码:nacos (这个都是默认的)
后端使用配置中心
添加依赖
父项目pom.xml添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2022.0.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
使用到nacos的应用模块的pom.xml添加依赖
<!-- 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
添加读取bootstrap.properties文件的依赖
<!--SpringBoot 2.4版本之后 SpringCloud 2020,需要引入该依赖,才能读取bootstrap文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
Nacos配置不同环境的配置
后端创建bootstrap.properties文件
# 注册中心的名字
spring.application.name=member
## 启动环境,nacos会根据环境读不同的配置dataId:member-dev.properties
spring.profiles.active=dev
## nacos server地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
## 配置中心文件后缀,默认properties
spring.cloud.nacos.config.file-extension=properties
配置中心的控制台增加这个配置
配置完成
修改配置文件中的配置,并实时读取
可以点编辑 去修改配置文件的配置 那么后端这里会实时接收到nacos的发布。当我更新了配置文件中setvalue的值然后发布之后,
控制台打印的日志如下:
如果需要实时更新则加上@RefeshScope注解
不同命名空间实现项目之间的隔离
创建命名空间
bootstrap.properties文件下添加命名空间(这里的值是刚刚新建命名空间的id)
这样就会只读取该命名空间下的配置文件,从而不同项目使用不同的命名空间,完成项目隔离。
注意:如果文件里面没有设置命名空间,默认是读取pulic下面的配置。如果public下面没有配置的话 则是去读取后端代码里面的配置