网站首页 > 博客文章 正文
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的配置文件
## 数据库为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
这里 -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_info 中 tenant_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 操作类型,增改删
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启动;
启动调试 启动调试; 打一个断点,然后管理后端操作一下;看下效果
调试成功
项目启动了,也调试成功了; 那么我们就可以方便的开始阅读源码了!
猜你喜欢
- 2024-10-01 微服务学习笔记(微服务怎么学)
- 2024-10-01 干货:SpringBoot集成Nacos,填坑篇
- 2024-10-01 记一次把Nacos做成服务并开机启动
- 2024-10-01 Nacos 配置中心与注册中心(nacos配置中心连接超时)
- 2024-10-01 小白入门必知必会-Nacos单机安装(nacos入门教程)
- 2024-10-01 windows系统 安装nacos服务注册与发现中心
- 2024-10-01 网络环境问题导致的nacos集群故障
- 2024-10-01 分布式服务限流降级熔断解决方案Nacos之Dashboard界面配置含义
- 2024-10-01 Nacos你真的理解了吗(nacos百科)
- 2024-10-01 java微服务环境配置——注册中心 配置中心Nacos
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 357℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)