【Spring Cloud Alibaba 微服务教程】 Nacos 作为配置中心

2020/05/03

Nacos 作为配置中心

入门

1、创建应用

创建一个命名为: nacos-cloud-config-example 的 Spring Boot 应用,

2、添加依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.13.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.mtcarpenter</groupId>
    <artifactId>nacos-could-config-example</artifactId>
    <version>1.0.0</version>
    <name>nacos-config</name>

    <properties>
        <java.version>1.8</java.version>
        <alibaba.version>2.1.0.RELEASE</alibaba.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- nacos config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

  • dependencyManagement: 主要用于主版本管理,后续所有子项目使用的依赖项为同一版本,无需在指定依赖。

注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。

更多版本对应关系参考:版本说明 Wiki

3、增加配置

bootstrap.properties 中配置 Nacos server 的地址:

spring.application.name=nacos-config
server.port=8090
spring.cloud.nacos.config.server-addr=192.168.0.145:8848
  • port:项目端口
  • spring.application.name:服务名称
  • spring.cloud.nacos.discovery.server-addr: nacos 服务器的地址

说明:之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。默认采用 spring.application.name.properties

4、加注解

在启动类上加入注解,这里暂无注解。

5、控制类

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${mtcarpenter.title:none}")
    private String mtcarpenter;


    @RequestMapping("/get")
    public String get() {
        return mtcarpenter;
    }


}
  • ` @Value:获取properties`中的属性
  • @RefreshScope:动态刷新服务器上的配置。

6 、nacos config 配置管理

访问 nacos server地址: http://127.0.0.1:8848/nacos/,进入配置管理。

创建配置

75483604-0b28-4c3a-ae12-d488555f5c45.png

其中:

  • Data ID:填入nacos-config.properties,与spring.application.name名字保持一致。

  • Group: 暂不做修改默认值DEFAULT_GROUP

  • 配置格式:选择Properties

  • 配置内容:应用要加载的配置内容,这里仅作为示例,做简单配置

    mtcarpenter.title=nacos-config
    

7、启动项目

启动完成之后,访问 http://localhsot:8090/config/get ,返回如下:

nacos-config

在前面控制台加入了@RefreshScope,可以动态刷新配置。

  • 配置内容:应用要加载的配置内容,这里仅作为示例,做简单配置

    mtcarpenter.title=nacos-config-title
    

输出如下:

nacos-config-title

进阶

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profile.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml 类型。

1、自定义配置

在实际中项目中,我们的需求 data-id有格式要求,和spring.application.name并不一致,数据格式为yaml, 配置如下:

spring.application.name=nacos-config
server.port=8090
spring.cloud.nacos.config.server-addr=192.168.0.145:8848

# 自定义 name ,file-extension :默认 properties 可以修改为 yaml
spring.cloud.nacos.config.prefix=nacos-config
spring.cloud.nacos.config.file-extension=yaml

对应data-id:nacos-config.yamlnacos server服务端新增如下:

b2f1e46f-a323-86a2-e18f-119f6a32a268.png

2、多环境

实际开发中一般环境有testdevprod 等。

spring.application.name=nacos-config
server.port=8090
spring.cloud.nacos.config.server-addr=192.168.0.145:8848

# 自定义 name ,file-extension :默认 properties 可以修改为 yaml
spring.cloud.nacos.config.prefix=nacos-config
spring.cloud.nacos.config.file-extension=yaml
# 环境 dev test prod
spring.profiles.active=dev

启动查找data-id环境如下:


# ${prefix}-${spring.profile.active}.${file-extension}
nacos-config-dev.yaml

3、服务端创建多个命名空间

  • 创建命名 :dev

7c019e22-e8f0-3648-7f40-b828a28de837.png

  • 进入配置列表:切换 dev ,创建配置

19088c4c-978a-d2f0-0770-bb04cfcd98e6.png

  • 修改在启动类增加
spring.application.name=nacos-config
server.port=8090
spring.cloud.nacos.config.server-addr=192.168.0.145:8848

spring.cloud.nacos.config.namespace=67f66b31-d97a-403f-988e-d56aebb4ccd8
  • namespace: 创建命名空间dev自动生成的。

4、加载多个配置

spring.cloud.nacos.config.ext-config[0].data-id=common.properties
spring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=database.properties
  • ext-config:数组,目前有 dataIdgrouprefresh

5、加载多个共享配置

在实际开发中,数据库,日志配置文件大部分相同在实际开发中,就可以放在一个公共的文件进行引用,如下:

spring.cloud.nacos.config.shared-dataids=common.properties,base-common.properties
spring.cloud.nacos.config.refreshable-dataids=common.properties,base-common.properties

代码示例

更多系列文章请访问下面查看仓库:

其中,本文示例代码名称:

  • nacos-cloud-config-example:nacos 配置中心


微信扫描二维码,关注一个有故事的程序员

(转载本站文章请注明作者和出处 山间木匠-mtcarpenter

Post Directory

扫码关注公众号:山间木匠
发送 290992
即可立即永久解锁本站全部文章