前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Nacos云原生】阅读源码第一步,本地启动Nacos

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

作者头像
石臻臻的杂货铺[同名公众号]
发布2022-06-27 13:17:57
9280
发布2022-06-27 13:17:57
举报
文章被收录于专栏:kafka专栏kafka专栏

前言

在我们去阅读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
image.png
image.png

这里 -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

字段

备注

id

主键自增

kp

定值1

tenant_id

命名空间id,是一个UUID字符串

tenant_name

命名空间名字

tenant_desc

命名空间描述

create_source

创建人

gmt_create

创建时间

gmt_modified

修改时间

(kp,tenant_id) 组成唯一约束

config_info 配置信息表

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

字段

描述

id

自增主键

data_id

数据ID

group_id

组ID,默认DEFAULT_GROUP

content

配置内容,是一个longtext类型

md5

content的md5

tenant_id

租户ID,对应tenant_ino中的tenant_id

app_name

归属App名字

type

json、properties、text、xml等等格式

gmt_create

创建时间

gmt_modified

修改时间

c_desc

描述

config_info_beta 灰度配置信息

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

字段

描述

id

主键自增

data_id

数据id

group_id

组id

app_name

应用名称

content

配置内容

beta_ips

需要灰度发布的机器,如果ip在这里面,则会获取到这里面的配置信息

md5

content的md5

tenant_id

租户ID,就是不同的命名空间

gmt_create

创建时间

gmt_modified

修改时间

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

config_tags_relation tag关系表

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

字段

描述

id

主键。

tag_name

标签名字

tag_type

标签类型

data_id

数据id

group_id

组id

tenant_id

租户ID,就是不同的命名空间

nid

主键自增长

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

his_config_info 历史配置表

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

字段

描述

id

id

nid

主键,自增

data_id

数据id

group_id

组id

app_name

应用名称

content

配置内容

md5

content的md5

tenant_id

租户ID,就是不同的命名空间

gmt_create

创建时间

gmt_modified

修改时间

op_type

I、U、D 操作类型,增改删

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

调试成功

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 启动Nacos项目
    • 1.克隆Nacos源码
      • 2.配置Mysql数据源
        • 3.将项目打包发布
          • 检查启动是否成功
          • Nacos配置中心数据库表结构说明
            • tenant_info 租户信息表(命名空间表)
              • config_info 配置信息表
                • config_info_beta 灰度配置信息
                  • config_tags_relation tag关系表
                    • his_config_info 历史配置表
                    • 如何本地调试Jar包方式启动的源码
                    相关产品与服务
                    对象存储
                    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档