这篇文章主要介绍的Nacos功能有:

  1. 多微服务的配置统一管理,将微服务中相同的配置提出来,只需要配置一次,不同的服务添加引用即可,达到减少同步配置的目的
  2. 多运行环境的配置管理,在同一个Nacos中,让不同运行环境的配置隔离,减少nacos服务的部署进程数,节省服务器资源
  3. 配置的自动刷新,当在Nacos中的配置信息发生变化时,发布时,自动更新到使用配置的微服务中

配置的统一管理

在使用SpringCloud开发微服务时,我们会遇到很多配置文件重复配置的问题,比如,我们有三个微服务,都会使用到Redis,那么就需要配置Redis的连接信息,一般的做法有:

  1. 每个微服务自己配置自己的redis连接信息,这样就导致了重复配置,如果redis配置信息有变化,所有的微服务都需要修改一遍。
  2. 将Redis操作单独创建一个项目,其它的项目如果使用到redis时,依赖这个redis项目的依赖,这个需要额外增加一个项目管理。
  3. 将redis的连接信息放在Nacos的配置中心之中,所有的微服务只需要配置Redis的配置引用就可以了。

很明显第三种方法比较方便,这样可以统一管理Redis的配置,无需增加额外的辅助。

多运行环境的配置管理

在Spring Cloud微服务开发时,一般会有多个部署环境,比如本地开发环境,内部测试环境1,内部测试环境2。Nacos做为配置中心,来怎么区分不同的运行环境读取不同的配置呢?这就要用到Nacos的命名空间的功能了。
命名空间可以理解为最外面的一个包装,在微服务中读取配置时,指定运行环境的命名空间,那么这个微服务只能读取这个命名空间下的配置,不同的命名空间的配置是完全隔离的。

  1. 创建namespace
    打开nacos的管理界面,登陆之后,选择命名空间 -> 右上角新建命名空间,填写信息,创建成功,如下图所示:
  2. 微服务配置redis 微服务配置多个nacos地址_微服务

  3. 在名称空间下添加配置

微服务配置redis 微服务配置多个nacos地址_微服务_02


在Nacos添加配置时,需要注意一下Data ID的配置,它的规则是:微服务的名称.yaml 或微服务的名称-xxxx.yaml ; 这里的微服务的名称指的是在微服务的配置的名字,如果是共享的配置,不受此规则限制,可以随意全名。

微服务配置redis 微服务配置多个nacos地址_微服务_03

spring:
  application:
    name: WebGatewayServer

后面的-xxxx是指的是可以选择激活的配置文件:

spring:
  application:
    name: WebGatewayServer
  profiles:
    active: ServerConfig
  1. 在服务中配置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就会自动同步到每一个微服务之中,配置的数据会自动刷新为当前最新的数据。