记录一下nacos源码调试和demo、方便后面使用快速入手
1、源码下载
https://github.com/alibaba/nacos.git
2.将下载的源码导入idea
3.解决idea报错:找不到entity包
执行 mvn compile,原因是这个包目录是由protobuf在编译时自动生成
使用IDEA,也可以使用IDEA的protobuf插件:
4.导入SQL
找到distribution\conf\nacos-mysql.sql文件 新建nacos-config数据库,执行nacos_mysql.sql文件,将数据导入数据库,将配置用到的表导入数据库
5.修改application.properties文件中的mysql配置
console项目下application.properties文件中的mysql配置,改成自己的账号密码
注意:mysql5.7需要添加&serverTimezone=Asia/Shanghai
6.添加JVM启动参数
-Dnacos.standalone=true
-Dnacos.home=D:\nacos-2.0.3\distribution
7.启动
找到console项目下的nacos启动类,查看日志启动成功
启动成功之后打开http://localhost:8848/nacos 默认用户/名密码 nacos
8.搭建Nacos客户端项目
我们直接使用DEA Ultimate,Ultimate 内置 SpringBoot工程向导,方便地创建Spring Cloud 微服务项目。创建工程->选择 Spring Initializr;右侧选中 Custom,写入阿里云地址start.aliyun.com,默认是 start.spring.io
直接下一步输入工程相关信息:maven坐标等
点击maven坐标系后界面中的Next按钮后进入Dependencies界面,选中Spring Cloud Alibaba模块后在右侧的依赖项中勾选Nacos Service Discovery、Nacos 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 的拼接格式变成 {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
注:优先级越来越高