nacos系列-一文带你入门(本地源码方式启动)

575 阅读2分钟

image.png 图片来源

记录一下nacos源码调试和demo、方便后面使用快速入手

1、源码下载

https://github.com/alibaba/nacos.git

2.将下载的源码导入idea

image.png

3.解决idea报错:找不到entity包

执行 mvn compile,原因是这个包目录是由protobuf在编译时自动生成

image.png

使用IDEA,也可以使用IDEA的protobuf插件:

image.png

4.导入SQL

找到distribution\conf\nacos-mysql.sql文件 新建nacos-config数据库,执行nacos_mysql.sql文件,将数据导入数据库,将配置用到的表导入数据库

image.png

5.修改application.properties文件中的mysql配置

console项目下application.properties文件中的mysql配置,改成自己的账号密码

image.png

注意:mysql5.7需要添加&serverTimezone=Asia/Shanghai

6.添加JVM启动参数

-Dnacos.standalone=true 
-Dnacos.home=D:\nacos-2.0.3\distribution

image.png

7.启动

找到console项目下的nacos启动类,查看日志启动成功

image.png

启动成功之后打开http://localhost:8848/nacos 默认用户/名密码 nacos

image.png

8.搭建Nacos客户端项目

我们直接使用DEA Ultimate,Ultimate 内置 SpringBoot工程向导,方便地创建Spring Cloud 微服务项目。创建工程->选择 Spring Initializr;右侧选中 Custom,写入阿里云地址start.aliyun.com,默认是 start.spring.io

image.png 直接下一步输入工程相关信息:maven坐标等

点击maven坐标系后界面中的Next按钮后进入Dependencies界面,选中Spring Cloud Alibaba模块后在右侧的依赖项中勾选Nacos Service DiscoveryNacos Configuration;同样选中Web模块后在右侧的依赖项中勾选Spring Web依赖。

完成以后会自动添加spring-cloud-alibaba-dependencies相关依赖,需要再添加spring-cloud-dependencies,完整pom如下:

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <spring-boot.version>2.3.12.RELEASE</spring-boot.version>
    <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
    <spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>
</properties>

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

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>


9.修改配置文件,添加nacos相关配置

server:
  port: 8080

spring:
  application:
    name: nacos-example
  cloud:
    nacos:
      discovery:
        username: nacos
        password: nacos
        server-addr: localhost:8848
        namespace: public
      config:
        server-addr: localhost:8848
        username: nacos
        password: nacos
        contextPath: '/nacos'
        file-extension: yml

配置文件加载

data ID 是配置集的唯一标识,一个应用可以包含多个配置集,每个配置集都需要被一个有意义的名称标识。 Data ID 取值:就是 “前缀-环境-扩展名”,如下所示:

${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

① prefix:前缀,默认是 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。

若不指定,默认采用应用名的方案

spring.application.name=nacos-example

手动指定配置的dataID前缀标识

spring.cloud.nacos.config.prefix=nacos-example

② active:配置运行环境,即为当前环境对应的 profile。

spring.profiles.active=dev

注意:当 spring.profiles.active 为空时,对应的连接符 ”-“ 也将不存在,dataId 的拼接格式变成 prefix.{prefix}.{file-extension}

③ file-exetension:配置文件的类型,默认是 properties,也可以通过配置项 spring.cloud.nacos.config.file-extension 来配置,目前支持的类型有 TEXT、JSON、XML、YAML、HTML、Properties

④ 最终配置: 经过前面三个步骤,我们最终在nacos配置中心的控制台新增配置文件就是:

nacos-example

nacos-example.yml

nacos-example-dev.yml

注:优先级越来越高