文章目录
前言
前面已经完成了springcloudalibaba网关,限流和服务间的调用,现在来阅读下nacos源码,进一步加深对springcloudalibaba的理解,这里的源码阅读仅为自己的理解,如果有不对的可以指出,不一定就是完成正确的。
一、nacos源码下载编译
1.1源码下载
源码下载地址
这里我下载的是nacos2.2.3版本
1.2 解压并且打开
使用idea打开解压后的文件,得到如下工程。
1.3 下载安装protoc
这里主要是因为nacos使用的序列化协议不是java自带的,使用的Protobuf,所以要先安装这个编译器,反编译出java类,才能使用nacos正常功能。
下载地址为:protoc下载地址
解压到本地你的安装目录,并且添加变量到系统环境变量
编译proto文件,在源码这个目录下编译文件
protoc --java_out=./java ./proto/consistency.proto
protoc --java_out=./java ./proto/Data.proto
编译完成后会多出这个目录
1.4 本地启动nacos
启动类为
nacos-2.2.3\console\src\main\java\com\alibaba\nacos\Nacos.java
编辑idea环境变量,增加java启动参数
-Dnacos.standalone=true
登录nacos本地管理界面 http://localhost:8848/nacos
可以看到本地已经成功启动了nacos服务,再启动客户端服务注册到本地的nacos服务,就可以开始源码阅读调试了。
二、客户端服务注册到nacos
新建一个springcloudalibaba项目服务,这里怎么创建就不演示了,附pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springcloudalibaba</groupId>
<artifactId>server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>server</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>8</java.version>
<spring-boot.version>2.6.13</spring-boot.version>
<spring-cloud.version>2021.0.5</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- SpringCloud 微服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringCloud Alibaba 微服务 -->
<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>
<!-- SpringBoot 依赖配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.0</version>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.1.修改本地配置文件注册到本地nacos
# Tomcat
server:
port: 8081
# Spring
spring:
application:
# 应用名称
name: server
profiles:
# 环境配置
active: dev
main:
allow-bean-definition-overriding: true
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: localhost:8848
group: alibaba
namespace: f72d6fd6-406e-4b2f-843c-f23c8f31f1ce
register-enabled: true
config:
# 配置中心地址
server-addr: localhost:8848
# 配置文件格式
file-extension: yml
group: ${spring.cloud.nacos.discovery.group}
namespace: ${spring.cloud.nacos.discovery.namespace}
shared-configs[0]:
data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} # 配置文件名-Data Id
group: ${spring.cloud.nacos.discovery.group} # 默认为DEFAULT_GROUP
refresh: false
# sentinel:
# #取消懒加载
# eager: true
# #sentinel服务地址
# transport:
# dashboard: 192.168.184.131:8480
logging:
level:
com.alibaba.nacos.client: info
2.2 启动server服务
可以看到服务已经注册到nacos上去了。
总结
1.由于篇幅太长了,下一篇幅开始源码解析,这里仅展示如何下载源码并且运行源码,并且注册服务到nacos上,更方便研究源码。
2.protoc必须安装编译,否则那个模块会报错。
3.注意nacos版本和springcloudalibaba的版本匹配问题,如果不知道是否匹配,可以按我给的pom文件,直接用上面的版本即可。