什么是配置中心
在微服务的环境下,将项目需要的配置信息保存在配置中心,需要读取时直接从配置中心读取,方便配置管理的微服务工具
可以将部分yml文件的内容保存在配置中心
一个微服务项目有很多子模块,这些子模块可能在不同的服务器上,如果有一些统一的修改,需要逐一修改这些子模块的配置,由于它们是不同的服务器,所以修改起来很麻烦,如果将这些子模块的配置集中在一个服务器上,去修改这个服务器的配置信息,就相当于修改了所有子模块的信息,这个服务器就是配置中心
使用配置中心的原因就是能够达到高效地修改各模块配置的目的
配置中心的使用
Nacos既可以做注册中心,也可以做配置中心
做配置中心支持各种类型/格式的配置文件
properties\yaml(yml)\txt\json\xml等
Nacos数据结构

namespace: 命名空间
Group: 分组
Service/DataId: 具体数据
命名空间
namespace是Nacos提供的最大的数据结构,一个Nacos可以创建多个命名空间,一个命名空间能够包含多个group,每一个group中又可以包含多条配置信息
在Nacos中新建命名空间

填写命名空间名称和描述即可
Nacos有默认的命名空间public不能修改和删除
添加命名空间后,我们在Nacos注册的服务或添加的配置就可以指定命名空间了
因为多个命名空间可以隔离项目,每个项目使用自己的命名空间,互不干扰

分组
一个命名空间可以有多个分组,进行进一步分离
如果不需要分组,推荐使用group名称: DEFAULT_GROUP
服务或配置
确定了命名空间和分组之后,就可以添加服务或配置了
我们启动的各种模块就是服务,这些服务都是默认保存在public命名空间中
我们主要使用配置中心的功能,在命名空间中添加配置
添加配置就是设置DataId
实际在Nacos中定位一个配置的结构为
Namespace>Group>DataId
Nacos添加配置
Nacos首页>配置管理>配置列表>添加配置

添加模块数据库连接配置

项目读取配置
如果要读取配置中心的信息,首先要添加依赖

上面添加的依赖可能会因SpringCloud版本而有不同的情况(当前是2020.x以后的版本)
在添加完依赖后,还需要添加yml文件的配置
因为配置文件的特性,bootstrap这一组是加载系统配置的,所以读取配置中心的配置信息,最好添加在
bootstrap.yml/properties中

SpringCloud项目的配置文件加载顺序

bootstrap.yml和bootstrap.properties这组配置文件的加载时机,整体早于application这一组,它的作用是实际开发时,主要配置系统内容,一般都是不轻易修改的
另外先加载yml后加载properties,如果配置文件同时设置了同一个属性,后加载的会覆盖掉先加载的