前言

在我们去阅读Nacos源码之前,我们得先了解Nacos是干嘛的,以及怎么用,这样有利于我们更容易去理解源码;

查看Nacos的官方文档,我们知道Naocs主要有以下特性:

  • 配置中心
  • 服务注册与发现
  • ...

Nacos有给我们提供管理界面,用来方便配置数据;我们先把整个Nacos源码克隆下来,本地启动;熟悉一下如何使用它

启动Nacos项目

1.克隆Nacos源码

git clone https://github.com/alibaba/nacos.git

导入到Idea中

2.配置Mysql数据源

Nacos内置嵌入式derby数据库,但是它只适合开发测试中使用,也不利于我们观察数据;所以我们更改一下数据库为Mysql

在使用Mysql之前,需要先建立nacos_config的数据库sql文件在模块 distribution 中的conf/nacos-mysql.sql ; 执行一下这个文件;

在模块 nacos/distribution 中添加Mysql的配置文件

## 数据库为mysql
spring.datasource.platform=mysql
## 数据库编号 因为可能配置有多数据源 主从
db.num=1
db.url.0=jdbc:mysql://XX.XX.XXX.XX:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user.0=name
db.password.0=password

3.将项目打包发布

执行打包命令

mvn -Prelease-nacos clean install -U  -Dmaven.test.skip=true

打包完毕,执行启动脚本

sh distribution/target/nacos-server-{version}/nacos/bin/startup.sh -m standalone

这里 -m standalone 表示单机模式启动,还有其他可选的参数有: - -f [config/naming]启动模式 支持只启动某一个模块,config:配置中心; naming:服务注册与发现,不设置时所有模块都会启动

  • -s 后面接服务包名字; 默认值是 nacos-server 就是可以指定启动的Jar包名;

检查启动是否成功

启动成功之后,就可以访问管理后台了 http://localhost:8848/nacos/index.html 登陆账户密码都是: nacos 登陆之后的管理后台

如果刚刚启动的时候加了参数 -f config 那么现在看到的只有配置管理命名空间两个菜单栏了 使用的详细解释可以参考官方文档 控制台手册

Nacos配置中心数据库表结构说明

tenant_info 租户信息表(命名空间表)

Nacos 基于Namespace 帮助用户逻辑隔离多个命名空间,这可以帮助用户更好的管理测试、预发、生产等多环境服务和配置,让每个环境的同一个配置(如数据库数据源)可以定义不同的值。

这个命名空间的数据就是存在表 tenant_infotenant_info

config_info 配置信息表

config_info_beta 灰度配置信息

config_tags_relation tag关系表

his_config_info 历史配置表

如何本地调试Jar包方式启动的源码

由于上面的启动方式,我们可能不能进行本地Debug;但是我们可以在启动的时候开启Debug端口,通过远程监听Debug端口来进行Debug;

那么我们先修改一下启动脚本,打开调试端口修改 文件 distribution/target/nacos-server-{version}/nacos/bin/startup.sh

# 加入调试端口  6666调试端口随意设置
JAVA_DEBUG_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=6666,server=y,suspend=n"echo "$JAVA ${JAVA_DEBUG_OPTS} ${JAVA_OPT}  " > ${BASE_DIR}/logs/start.out 2>&1 &
nohup $JAVA ${JAVA_DEBUG_OPTS} ${JAVA_OPT}  nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &

重新启动

先把项目停止 sh distribution/target/nacos-server-{version}/nacos/bin/shutdown.sh 然后重新启动 sh distribution/target/nacos-server-1.1.3/nacos/bin/startup.sh -m standalone

启动成功,检查调试端口是否打开

已经有一个6666的端口在LISTEN中了;

配置调试 在Idea中新建一个remote启动;

启动调试 启动调试; 打一个断点,然后管理后端操作一下;看下效果

调试成功

项目启动了,也调试成功了; 那么我们就可以方便的开始阅读源码了!

nacos 启动_【Nacos源码之配置管理 一】阅读源码第一步,本地启动Nacos相关推荐

  1. 【ORB-SLAM2源码梳理6】Track()函数的第一步:单目初始化MonocularInitialization()

    文章目录 前言 一.Track()函数 二.单目初始化MonocularInitialization() 1. 判断单目初始化器是否创建,若没有就创建. 2. 已创建初始化器,判断特征点数目 3. 在 ...

  2. thinkpadx1mdt 网络启动_联想ThinkPad X1 Carbon 2020如何进入bios设置从U盘启动?

    联想电脑是现在很多用户都在使用的电脑品牌,最近有使用联想ThinkPad X1 Carbon 2020的用户重装系统,但由于该款机型上市的时间并不算长,因此许多用户因此不知道如何进入bios设置从U盘 ...

  3. centos6 mysql 启动_【17-02-18】 【求助】centos6 mysql重启后无法正常启动

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 # service mysqld restart Stopping mysqld: [ OK ] MySQL Daemon failed to start ...

  4. 如何访问集群中指定的服务器,【Nacos源码之配置管理 六】集群模式下服务器之间是如何互相感知的...

    前言 我们用Nacos当配置中心的时候,上一篇文章中 [Nacos源码之配置管理 五]为什么把配置文件Dump到磁盘中 知道了,所有的配置文件都会Dump到服务器的本地磁盘中, 那么集群模式下: 服务 ...

  5. jdk源码分析书籍 pdf_如何阅读源码?

    点击上方"IT牧场",选择"设为星标" 技术干货每日送达! 阅读源码是每个优秀开发工程师的必经之路,那么这篇文章就来讲解下为什么要阅读源码以及如何阅读源码. 首 ...

  6. 不允许使用java方式启动_细品 Java 中启动线程的正确和错误方式

    细品 Java 中启动线程的正确和错误方式 前文回顾详细分析 Java 中实现多线程的方法有几种?(从本质上出发) start 方法和 run 方法的比较 代码演示:/** * * start() 和 ...

  7. 程序员看过这篇文章 让你学会阅读源码!

    摘要:随着越来越多的公司使用敏捷开发,能够阅读别人的代码比以往显得更重要.这就需要学习一些如何提高这项技能的技巧.本文提供了几种提高代码阅读技巧的方法. 在软件开发人员的职位描述中有阅读源代码.然而, ...

  8. 源码面前没有秘密,推荐 9 个带你阅读源码的开源项目

    在文章开始之前,请各位先回忆下在日常开发过程中,都使用或依赖了哪些开源项目?是不是发现,开源项目已经完全融入到日常开发! 如今大多数的程序员技术栈和工具箱里,或多或少都有开源项目的身影:大到操作系统. ...

  9. Android阅读源码从工具开始

    常言说:工欲善其事,必先利其器,所以要很好的阅读Android的源码,就先准备好工具. 第一款工具:VPN 由于天朝的原因,Google的很多东西我们都无法阅读,所以第一步就是突破.之前用的是红杏这个 ...

最新文章

  1. QNX Hypervisor管理程序
  2. DataTable添加列和行的三种方法
  3. Linux定时任务服务crond
  4. 2021暑假实习-SSM超市积分管理系统-day01笔记
  5. 这五个网站可以让你免费学习编程,快收藏!
  6. 牛客网暑期ACM多校训练营(第一场)J Different Integers
  7. Kubernetes 无法删除pod实例的排查过程
  8. apt-get软件包管理命令 和 apt-key命令
  9. 计算机世界的虚拟机,容器和医学界的人工硬脑膜
  10. 牛客网--牛牛找工作
  11. python编程与数学书籍
  12. Golang遇到的问题记录
  13. 【51CTO/BBS】请教: SQL里有没有字符串分解Split的函数??
  14. 头条、滴滴、百度实习面试试题及面试总结
  15. 医院CRM客户关系管理系统
  16. GPS从入门到放弃(十五)--- DCB差分码偏差
  17. R语言TCGA数据下载及处理biolinks包的学习与使用(一)数据下载
  18. 解决MAC用HDMI连接显示器就没声音问题
  19. Android 权限表,危险权限
  20. CSS 部分样式为什么有的浏览器(如:IE系列)无法呈现出来?

热门文章

  1. Linux内存管理之内存寻址:分段机制的实现方式
  2. 必须了解的Web安全知识(第一部分:HTTPS,TLS,SSL,CORS,CSP)
  3. Linux环境编程:fork系统调用及其陷阱 - 内存复用,文件不复用
  4. Segment Model.
  5. Linux驱动开发快速参考
  6. 平衡二叉查找树的构造与遍历(C++)
  7. Hibernate常见面试题
  8. synchronized的用法介绍
  9. swag您的装置不支持_新品发布---微机保护装置
  10. JAVA学习-JAVA实现客户端与服务器端的TCP通信