使用 nacos 搭建注册中心及配置中心

本文为博主原创,转载请注明出处:

  在分布式微服务框架中,现在都流行使用 nacos 作为分布式框架的注册中心与配置中心。当我们搭建一套spring boot 框架的时候,默认会将配置文件

放在 resources 的配置目录下有bootstrap.yml 及application-dev.properties 配置文件进行管理,包括数据库配置,端口配置等等。 

  现在使用 nacos 便可实现服务注册 与 配置管理的功能。

  nacos 提供的中文网址连接如下:https://nacos.io/zh-cn/docs/quick-start-spring-boot.html

  具体步骤如下:

    1.在项目中引入nacos 以及spring boot web启动的相关的依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <spring-boot.version>2.2.8.RELEASE</spring-boot.version>
        <spring-cloud.version>2.2.2.RELEASE</spring-cloud.version>
        <spring-nacos.version>2.2.1.RELEASE</spring-nacos.version>
    </properties>

    <dependencies>
        <!--web启动-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring-boot.version}</version>
        </dependency>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>${spring-nacos.version}</version>
        </dependency>
        <!--nacos-discovery-->
       <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>${spring-nacos.version}</version>
        </dependency>

    </dependencies>

  2.在项目配置 bootstrap.yml 文件中配置配置中心

  其中有一个默认组group的属性,如果不配其默认值为 DEFAULT_GROUP 

spring:
  application:
    # 服务名称尽量用-,不要用_,不要用特殊字符
    name: test2
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml

  3.本地安装并启动 nacos

    nacos 默认的用户名和密码都为 nacos 。 在nacos 管理台进行配置中心的配置:

    配置管理 ---〉配置列表 ---- 〉点击加号 进行创建

点击加号进行配置  

  dataId 为项目框架中 bootstrap.yml 中的 spring.application.name 的配置值。

之于项目中 为什么要配置 bootstrap.yml 中配置application.name  以及项目启动如何匹配对应的配置文件列表,其缘由在nacos 中文网址给了说明:

进行启动,通过观察项目启动的端口号判断是否正确使用配置中心的配置,若未正确加载,则项目启动成功的端口号则为默认的8080,

若正确加载,则项目启动的端口号为配置中心的端口号:

  4.配置中心使用命名空间区分环境

    spring boot 项目中,常使用 application-dev.properties, application-test.properties, application-prd.properties等方式指定不同环境下的配置文件。

  nacos配置中心可以创建命名空间,区分不同的环境类型。

创建之后,会在配置列表看到 dev 的 tab 列表

  在列表中创建对应的配置,我这边创建的简单的配置如下:

 

  在项目代码的配置文件中指定命名空间以及 环境类型就可加载使用,在bootstrap.yaml中配置如下:

  namespace 的值为nacos 中命名空间的ID的值

spring:
  application:
    # 服务名称尽量用-,不要用_,不要用特殊字符
    name: test1
  profiles:
    active: dev
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        group: DEFAULT_GROUP
        namespace: 9f471483-5467-4077-81ae-b7ddb6cf2248

  本地项目启动加载配置,通过启动日志观察服务端口便可判断配置是否加载:

  

注意事项:

  1.在配置过程中,需要注意 pom中的 spring-boot-starter-parent 与  spring-boot-starter-web 两者的版本号相差不能太大,相差太大,容易导致启动报错,某些类 ClassNotFoundException等

  2.需要在项目的配置文件中指定项目名称

原文地址:https://www.cnblogs.com/zjdxr-up/p/14249547.html