当前位置:网站首页>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
控制台:
边栏推荐
- 789. 数的范围
- 网络层解析——IP协议、地址管理、路由选择
- Lombok
- 【web】Understanding Cookie and Session Mechanism
- Nanoprobes免疫测定丨FluoroNanogold试剂免疫染色方案
- 【LeetCode】102.二叉树的层序遍历
- Use DBeaver for mysql data backup and recovery
- 永磁同步电机36问(二)——机械量与电物理量如何转化?
- 记一次gorm事务及调试解决mysql死锁
- Reflex WMS Intermediate Series 7: What should I do if I want to cancel the picking of an HD that has finished picking but has not yet been loaded?
猜你喜欢
最大层内元素和
How ReentrantLock works
罗德里格斯公式(Rodrigues‘ Rotation Formula)推导
Talking about the "horizontal, vertical and vertical" development trend of domestic ERP
树链剖分-
BI - SQL 丨 WHILE
Entry name 'org/apache/commons/codec/language/bm/gen_approx_greeklatin.txt' collided
Use DBeaver for mysql data backup and recovery
[Unity entry plan] 2D Game Kit: A preliminary understanding of the composition of 2D games
因为WiFi原因navicat 无法连接数据库Mysql
随机推荐
灰度传感器、、、diy原理。。图
极大似然估计
aws s3上传文件
机器人领域期刊会议汇总
22-08-01 西安 尚医通(01)跨域配置、Swagger2、R类、统一异常处理和自定义异常、Logback日志
BI-SQL丨WHILE
Chopper webshell feature analysis
JS中获取对象数据类型的键值对的键与值
【LeetCode】20.有效的括号
微服务:微智能在软件系统的简述
53. 最小的k个数
Nacos源码分析专题(二)-服务注册
递归检查配置项是否更变并替换
2022牛客多校三_F G
Lombok
NIO's Sword
线程的不同状态
Docker-compose安装mysql
详解最强分布式锁工具:Redisson
1688以图搜货