本文基于nacos-2.0.3版本
本文是解析nacos的第一篇文章,使用的是nacos-2.0.3版本。github地址:https://github.com/alibaba/nacos.git 。
要分析源码,首先需要在本地运行源码。下载完成后,nacos是无法直接运行的,需要对源码做一些改动。下面介绍我对nacos所做的改动。
一、解决编译报错
代码下载后,idea会报错,提示缺少com.alibaba.nacos.consistency.entity包下的类。
这是因为nacos使用了protobuf作为序列化工具,我们需要使用protoc工具生产缺少的代码。
1、下载protoc
从https://github.com/protocolbuffers/protobuf/releases网页上下载与系统对应的压缩文件。
本地解压后,得到protoc.exe文件:
2、生成缺失代码
使用cmd命令进入到源码的consistency/src/main/proto/路径下。
在该路径下执行如下命令:
protoc --java_out=…/java/ ./consistency.proto
protoc --java_out=…/java/ ./Data.proto
执行完成后com.alibaba.nacos.consistency.entity包下会生成缺失的代码。
二、设置启动参数
启动之前,还需要配置启动参数。
我们可以查看bin目录下的startup.cmd或者startup.sh获得启动参数。
下面以windows为例做介绍。
下面是startup.cmd文件的最后几行代码:
set COMMAND="%JAVA%" %NACOS_JVM_OPTS% %NACOS_OPTS% %NACOS_CONFIG_OPTS% %NACOS_LOG4J_OPTS% nacos.nacos %*
echo %COMMAND% //为例查看完整命令,我自己添加了该行代码
rem start nacos command
%COMMAND%
上面的 COMMAND 就是需要执行的完整命令,打印出来如下:
“java.exe”
-server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=“D:\nacos”\logs\java_heapdump.hprof -XX:-UseLargePages -Dloader.path=“D:\nacos”/plugins/health,“D:\nacos”/plugins/cmdb -Dnacos.home=“D:\nacos”
-jar “D:\nacos”\target\nacos-server.jar
–spring.config.additional-location=file:“D:\nacos”/conf/ --logging.config=“D:\nacos”/conf/nacos-logback.xml
nacos.nacos
在上面“-jar”之前的属于JVM的参数,“-jar”之后的属于应用程序参数,也就是main方法入参args的值,分别设置到idea里面:
三、启动
nacos的启动类是console/src/main/java/com/alibaba/nacos/Nacos.java。
运行该类,
上图表示启动成功。
在浏览器里面打开http://localhost:8848/nacos,用户名和密码都是nacos。