这篇文章主要介绍的Nacos功能有:
- 多微服务的配置统一管理,将微服务中相同的配置提出来,只需要配置一次,不同的服务添加引用即可,达到减少同步配置的目的
- 多运行环境的配置管理,在同一个Nacos中,让不同运行环境的配置隔离,减少nacos服务的部署进程数,节省服务器资源
- 配置的自动刷新,当在Nacos中的配置信息发生变化时,发布时,自动更新到使用配置的微服务中
配置的统一管理
在使用SpringCloud开发微服务时,我们会遇到很多配置文件重复配置的问题,比如,我们有三个微服务,都会使用到Redis,那么就需要配置Redis的连接信息,一般的做法有:
- 每个微服务自己配置自己的redis连接信息,这样就导致了重复配置,如果redis配置信息有变化,所有的微服务都需要修改一遍。
- 将Redis操作单独创建一个项目,其它的项目如果使用到redis时,依赖这个redis项目的依赖,这个需要额外增加一个项目管理。
- 将redis的连接信息放在Nacos的配置中心之中,所有的微服务只需要配置Redis的配置引用就可以了。
很明显第三种方法比较方便,这样可以统一管理Redis的配置,无需增加额外的辅助。
多运行环境的配置管理
在Spring Cloud微服务开发时,一般会有多个部署环境,比如本地开发环境,内部测试环境1,内部测试环境2。Nacos做为配置中心,来怎么区分不同的运行环境读取不同的配置呢?这就要用到Nacos的命名空间的功能了。
命名空间可以理解为最外面的一个包装,在微服务中读取配置时,指定运行环境的命名空间,那么这个微服务只能读取这个命名空间下的配置,不同的命名空间的配置是完全隔离的。
- 创建namespace
打开nacos的管理界面,登陆之后,选择命名空间
-> 右上角新建命名空间
,填写信息,创建成功,如下图所示: - 在名称空间下添加配置
在Nacos添加配置时,需要注意一下Data ID的配置,它的规则是:微服务的名称.yaml 或微服务的名称-xxxx.yaml ; 这里的微服务的名称指的是在微服务的配置的名字,如果是共享的配置,不受此规则限制,可以随意全名。
spring:
application:
name: WebGatewayServer
后面的-xxxx是指的是可以选择激活的配置文件:
spring:
application:
name: WebGatewayServer
profiles:
active: ServerConfig
- 在服务中配置Nacos中管理的配置信息
需要添加依赖包:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
创建bootstrap.yml配置文件:
spring:
application:
name: WebGatewayServer
profiles:
active: ServerConfig
cloud:
nacos:
config:
group: WEB-GATEWAAY-GROUP
file-extension: yaml # 指定远程配置文件格式
namespace: 08d8508e-9967-4edd-a9de-ce283aeb81f7 # 命令空间,当多个环境使用同一个nacos管理时,用于隔离不同的环境,命令空间需要配置在nacos中配置的命令空间ID
#server-addr: localhost:8848 # nacos的服务地址
server-addr: 192.168.1.102:8848 # nacos的服务地址
带共享配置的配置方式:
spring:
application:
name: xinyueGameCenterServer
cloud:
nacos:
config:
shared-configs: # 在这里配置共享配置
- dataId: server-database.yaml
group: COMMON_GROUP
- dataId: server-redis.yaml
group: COMMON_GROUP
file-extension: yaml # 指定远程配置文件格式
namespace: 08d8508e-9967-4edd-a9de-ce283aeb81f7 # 命令空间,当多个环境使用同一个nacos管理时,用于隔离不同的环境,命令空间需要配置在nacos中配置的命令空间ID
#server-addr: localhost:8848 # nacos的服务地址
server-addr: 192.168.1.102:8848 # nacos的服务地址
配置自动刷新
当微服务使用Nacos的统一配置管理时,如果在Nacos中修改了某个配置项,那么Nacos就会自动同步到每一个微服务之中,配置的数据会自动刷新为当前最新的数据。