当前位置:网站首页>Nacos source code analysis topic (1) - environment preparation
Nacos source code analysis topic (1) - environment preparation
2022-08-02 02:46:00 【IT-Lao Niu】
1. 引言
要研究Nacos源码自然不能用打包好的Nacos服务端jar包来运行,需要下载源码自己编译来运行.
2.下载Nacos源码
Nacos的GitHub地址:https://github.com/alibaba/nacos
课前资料中已经提供了下载好的1.4.2版本的Nacos源码:
如果需要研究其他版本的同学,也可以自行下载:
大家找到其release页面:https://github.com/alibaba/nacos/tags,找到其中的1.4.2.版本:
点击进入后,下载Source code(zip):
3.导入项目工程Nacos源码
Our pre-course material presents a microservice project,包含了服务注册、发现等业务.
将之前下载好的NacosExtract the source code to the project directory:
然后,使用IDEA将其作为一个module来导入:
1)选择项目结构选项:

在弹出窗口中,选择nacos源码目录:
然后选择maven模块,finish:
最后,点击OK即可:
导入后的项目结构:
4.proto编译
Nacos底层的数据通信会基于protobuf对数据做序列化和反序列化.并将对应的proto文件定义在了consistency这个子模块中:
我们需要先将proto文件编译为对应的Java代码.
5.什么是protobuf
protobuf的全称是Protocol Buffer,是Google提供的一种数据序列化协议,这是Google官方的定义:
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化,很适合做数据存储或 RPC 数据交换格式.它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式.
可以简单理解为,是一种跨语言、跨平台的数据传输格式.与json的功能类似,但是无论是性能,还是数据大小都比json要好很多.
protobuf的之所以可以跨语言,就是因为数据定义的格式为.proto格式,需要基于protoc编译为对应的语言.
5.1.安装protoc
Protobuf的GitHub地址:https://github.com/protocolbuffers/protobuf/releases
我们可以下载windows版本的来使用:
另外,课前资料也提供了下载好的安装包:
解压到任意非中文目录下,其中的bin目录中的protoc.exe可以帮助我们编译:
然后将这个bin目录配置到你的环境变量path中,可以参考JDK的配置方式:
5.2.编译proto
进入nacos-1.4.2的consistency模块下的src/main目录下:
然后打开cmd窗口,运行下面的两个命令:
protoc --java_out=./java ./proto/consistency.proto
protoc --java_out=./java ./proto/Data.proto
如图:
会在nacos的consistency模块中编译出这些java代码:
6.运行
nacos服务端的入口是在console模块中的Nacos类:
我们需要让它单机启动:
然后新建一个SpringBootApplication:
然后填写应用信息:
然后运行Nacos这个main函数:
After starting the service,可以查看nacos控制台:
边栏推荐
- 数仓:为什么说 ETL 的未来不是 ELT,而是 EL (T)
- 240...循迹
- 树链剖分-
- What to study after the PMP exam?The soft exam ahead is waiting for you~
- 【LeetCode】20.有效的括号
- Outsourcing worked for three years, it was abolished...
- Flask 报错:WARNING This is a development server. Do not use it in a production deployment
- Curriculum Vitae;CV
- OperatingSystemMXBean获取系统性能指标
- Chrome浏览器无法加载已解压的.crx文件的解决办法
猜你喜欢

Oracle数据类型介绍

项目场景 with ERRTYPE = cudaError CUDA failure 999 unknown error

analog IC layout-Environmental noise

The state status is displayed incorrectly after the openGauss switch

aws s3 upload file

Unable to log in to the Westward Journey

Nanoprobes多组氨酸 (His-) 标签标记:重组蛋白检测方案

极大似然估计

记一次gorm事务及调试解决mysql死锁

Docker-compose安装mysql
随机推荐
【LeetCode】145.二叉树的后序遍历
ros多客户端请求服务
指针数组和数组指针
JS中获取对象数据类型的键值对的键与值
The principle and code implementation of intelligent follower robot in the actual combat of innovative projects
BI-SQL丨WHILE
Service discovery of kubernetes
Nacos源码分析专题(二)-服务注册
How ReentrantLock works
aws s3上传文件
C#测试项目中属性的用法
内卷的正确打开方式
菜刀webshell特征分析
Install mysql using docker
灰度传感器、、、diy原理。。图
ApiFox 基本使用教程(浅尝辄止,非广)
What to study after the PMP exam?The soft exam ahead is waiting for you~
国标GB28181协议EasyGBS平台兼容老版本收流端口的功能实现
MySQL - CRUD operations
JVM调优实战