Nacos介绍和分布式环境下的使用配置中心

什么是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
image.png
image.png
根据环境不同进行下载,下载之后解压到本地即可(和Redis的使用方法一致)

开启鉴权 启动之前配置token.secret.key(2.1.0版本之前不用)

找到安装目录下的conf目录下的application.properties文件(这里面可以修改端口等)
ctrl+f搜索: nacos.core.auth.plugin.nacos.token.secret.key(这个其实有点像登录功能里面去使用JWT加密用户信息一样 提高nacos的安全性 )
4de21caa4e9e90b38cbf01f9f60d156.png
使用Base64去编码一下这个key 字符串你可以自己任意设置 但是要32位
image.png
生成之后把结果复制到配置文件里面(为了你忘记 你可以把你的字符串也写到配置文件里面(注释掉))
image.png

启动Nacos服务

我的电脑是windows 所以我只演示windows下的启动方法
找到安装目录下的bin目录 启动命令行(在目录下输入cmd 按回车)输入命令

startup.cmd -m standalone

image.png
启动成功后可以访问nacos的控制台 http://localhost:8848/nacos
image.png
控制台页面 用户名:nacos 密码:nacos (这个都是默认的)
image.png

后端使用配置中心

添加依赖

父项目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

配置中心的控制台增加这个配置
image.png
image.png
配置完成
image.png

修改配置文件中的配置,并实时读取

可以点编辑 去修改配置文件的配置 那么后端这里会实时接收到nacos的发布。当我更新了配置文件中setvalue的值然后发布之后,
image.png控制台打印的日志如下:
dd2442a8b70f4ee5faf25c76d98af09.png
如果需要实时更新则加上@RefeshScope注解
image.png

不同命名空间实现项目之间的隔离

创建命名空间

image.png

bootstrap.properties文件下添加命名空间(这里的值是刚刚新建命名空间的id)

image.png
这样就会只读取该命名空间下的配置文件,从而不同项目使用不同的命名空间,完成项目隔离。
注意:如果文件里面没有设置命名空间,默认是读取pulic下面的配置。如果public下面没有配置的话 则是去读取后端代码里面的配置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值