写点什么

【Nacos 云原生】阅读源码第一步, 本地启动 Nacos

  • 2022 年 9 月 11 日
    江西
  • 本文字数:1849 字

    阅读完需:约 6 分钟

【Nacos云原生】阅读源码第一步,本地启动Nacos

作者石臻臻,CSDN 博客之星 Top5Kafka Contributornacos Contributor华为云 MVP,腾讯云 TVP,滴滴 Kafka 技术专家 KnowStreaming


KnowStreaming 是滴滴开源的Kafka运维管控平台, 有兴趣一起参与参与开发的同学,但是怕自己能力不够的同学,可以联系我,当你导师带你参与开源!

1 前言

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

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

  • 配置中心

  • 服务注册与发现

  • ...

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

2 启动 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 的配置文件

## 数据库为mysqlspring.datasource.platform=mysql## 数据库编号 因为可能配置有多数据源 主从db.num=1db.url.0=jdbc:mysql://XX.XX.XXX.XX:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=truedb.user.0=namedb.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
复制代码


image.png

这里 -m standalone 表示单机模式启动,还有其他可选的参数有:

  • -f [config/naming]启动模式 支持只启动某一个模块,config:配置中心; naming:服务注册与发现,不设置时所有模块都会启动

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


检查启动是否成功


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

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

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

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

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

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

(kp,tenant_id) 组成唯一约束

config_info 配置信息表

所有配置的数据都存在这个表中;

config_info_beta 灰度配置信息

Nacos 中的灰度发布功能,如果点击了灰度发布,并且填写灰度发布的服务器 Ip;信息会存储在这里;

(data_id,group_id,tenant_id) 组成唯一约束

config_tags_relation tag 关系表

每个配置文件都可以打上 tag 标签; 这张表记录的是配置文件与 tag 的绑定关系

(id,tag_name,tag_type) 组成唯一约束

his_config_info 历史配置表

Nacos 会把历史配置都会记录下来,用来方便回滚配置; 默认情况超过 30 天的记录会被删除;

4 如何本地调试 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 启动;



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


调试成功

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

发布于: 刚刚阅读数: 4
用户头像

关注公众号: 石臻臻的杂货铺 获取最新文章 2019.09.06 加入

进高质量滴滴技术交流群,只交流技术不闲聊 加 szzdzhp001 进群 20w字《Kafka运维与实战宝典》PDF下载请关注公众号:石臻臻的杂货铺

评论

发布
暂无评论
【Nacos云原生】阅读源码第一步,本地启动Nacos_云原生_石臻臻的杂货铺_InfoQ写作社区