之前和大家分享过JDK17的多版本管理及详细安装过程,然后在项目升级完jdk17后又发现之前的注册和配置中心nacos又用不了,原因是之前的nacos1.3版本的,版本太老了,已经无法适配当前新的JDK和Spring版本了,所以本次决定对Nacos也做个升级,刚好是新项目没有历史包袱,所有本次一步到位直接使用Nacos3.0,刚好Nacos前段时间正式发布了备受期待的3.0版本,该版本nacos不仅支持了MCP管理,还引入了分布式锁等常用功能,接下来,本篇文章将详细讲解下Nacos3.0的功能都有哪些升级以及如何搭建Nacos3.0的单机版和集群版的详细步骤!
Nacos 3.0都做了哪些变动?
一、技术栈全面升级
基础环境革新:Nacos 3.0果断拥抱现代技术栈,将JDK支持升级至17版本,同时适配Spring Boot 3.4.1框架。这一变革带来了显著的性能提升和安全性增强,同时也意味着开发者需要同步升级开发环境。
特别提醒:仍在使用JDK 8的项目团队需要先行完成环境升级才能使用新版本。
二、运维管理能力强化
全新管理接口:3.0版本引入了一套完善的Admin API体系,极大简化了运维操作流程。这些接口不仅支持控制台的独立部署,还计划提供配套的SDK工具,进一步降低管理复杂度。
安全机制升级:安全防护方面,新版本默认启用了全面的API认证机制,包括Admin API、Console API和Inner API。这一改变虽然增加了初始配置的工作量,但显著提升了系统的整体安全性。
三、AI时代的前瞻布局
MCP注册中心:Nacos 3.0敏锐捕捉到AI技术浪潮,创新性地支持Model Content Protocol协议,转型为MCP注册中心。这一功能突破体现在:
- 智能服务管理:支持各类AI模型服务的注册、发现和动态管理
- 零成本接入:现有API通过简单配置即可转换为MCP服务
- 智能路由:新增的Nacos-MCP-Router组件能智能匹配最佳服务节点
- 资源优化:通过信息过滤机制显著降低Token消耗
四、架构优化与功能增强
命名空间统一:简化了空命名空间与公共命名空间的处理逻辑,提升使用体验的一致性。
分布式锁支持:虽然尚处测试阶段,但这一功能有望减少对额外中间件的依赖。
智能监听机制:引入基于模式的模糊监听功能,大幅提升大规模服务管理的灵活性。
服务网格集成:原生支持xDS协议,实现与服务网格生态的无缝对接。
Kubernetes协同:通过Nacos Controller 2.0实现与K8s资源的双向同步。
Nacos3.0服务端详细安装步骤
一、JDK17安装
nacos依赖java环境运行,所以在部署nacos时先要在机器上安装好jdk,因nacos3.0最低要求jdk17以上,本次需要在服务器上安装jdk17,这里我们使用OpenJDK实现快速安装!
1、更新软件包列表
首先,更新你的包管理器的包列表:
sudo apt update
2、安装 OpenJDK 17
sudo apt install openjdk-17-jdk
3、验证安装
java -version
可以看到默认安装了最新版本17.0.15
二、下载Nacos3.0.0版本包
这里有两种方式:官网下载和github下载
方法一:去官网下载zip压缩包,再使用scp命令上传压缩包到Linux服务器
zip压缩包官网下载地址:
https://www.nacos.io/download/nacos-server/,这里选择3.0.0版本
使用scp命令上传本地zip包到linux服务器(注意:这里要把ubuntu、ip、目录替换成你自己的服务器)
scp -r nacos-server-3.0.0.zip ubuntu@119.91.210.32:/home/ubuntu/nacos
我把压缩包上传到了/home/ubuntu/nacos目录下
方法二:直接在Linux服务器使用wget命令下载
切换到你的linux要下载压缩包的目录下,使用以下命令下载nacos-server-3.0.0.zip包
wget https://gh.llkk.cc/https://github.com/alibaba/nacos/releases/download/3.0.0/nacos-server-3.0.0.zip
nacos的github包原下载路径是
https://github.com/alibaba/nacos/releases/download/3.0.0/nacos-server-3.0.0.zip,因国内服务器无法直接连接github,这里使用虾壳(https://xiake.pro/)对github地址转换下就可以直接高速下载了
三、解压Nacos发行包
使用以下命令解压zip包
unzip nacos-server-3.0.0.zip
解压完后会在同层多出个nacos文件夹
四、启动Nacos服务
1、参数准备
这里先别急着使用命令去启动nacos,我们先准备些必要数据,等会在启动Nacos时会要求输入,使用以下命令生成三个随机密钥
# 生成一个32位以上的 Base64 编码随机字符串
openssl rand -base64 32
# 生成一个随机16字节的Hex字符串
openssl rand -hex 16
得到的这三个密钥值拷贝出来,先找个地方存起来,后面启动Nacos时候会用到
接下来将详细讲下这三个参数的值如何使用及注意事项
2.1、nacos.core.auth.plugin.nacos.token.secret.key
nacos.core.auth.plugin.nacos.token.secret.key 是 Nacos 身份认证(JWT Token)的核心加密密钥,主要用于 生成和验证用户登录、API 访问的 Token。它的作用和安全影响如下:
核心作用
- 生成 JWT Token 当用户或客户端通过用户名/密码登录 Nacos 时,服务端会用该密钥 签发 JWT Token(类似会话凭证)。 后续所有请求(如注册服务、配置管理)都需要携带此 Token 进行身份校验。
- 验证 Token 合法性 服务端收到请求时,会用相同的密钥解密 Token,验证请求是否合法(防止伪造 Token)。
- 影响范围 所有 Nacos 的 用户登录、OpenAPI 调用、客户端鉴权 都依赖此密钥。
安全注意事项
- 必须自定义 默认安装时未设置此密钥,Nacos 会强制要求配置(否则无法启动)。 禁止使用示例密钥(如 VGhpc0lzTXlTdXBlclNlY3JldEtleSEhIVNvU2VjdXJl),否则会有严重安全风险。
- 一旦泄露的后果 攻击者可伪造任意用户的 Token,完全控制 Nacos 服务(增删配置、服务注册等)。
- 生产环境要求 密钥长度 ≥ 32 位原始字符串,并做 Base64 编码(如通过 openssl rand -base64 32 生成)。 密钥生成后 严禁更改,否则所有已颁发的 Token 会立即失效(需重新登录)。
如何配置?
1. 生成密钥(Linux/Mac)
openssl rand -base64 32
# 输出示例:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789+ab/cdefg==
2. 写入 Nacos 配置文件
修改
conf/application.properties:
nacos.core.auth.plugin.nacos.token.secret.key=aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789+ab/cdefg==
3. 重启 Nacos
sh shutdown.sh
sh startup.sh -m standalone
常见问题
- Q:密钥丢失怎么办?
A:所有用户需重新登录生成新 Token,旧 Token 全部失效。 - Q:集群环境如何配置?
A:所有节点必须使用 相同的密钥,否则节点间无法同步认证状态。 - Q:客户端需要配置吗?
A:客户端只需携带 Token(由服务端颁发),无需知道密钥本身。
2.2、nacos.core.auth.server.identity.key
nacos.core.auth.server.identity.key 是 Nacos 服务身份认证的密钥,主要用于 服务端和客户端之间的安全通信(如 Nacos 集群节点间的认证)。
作用
- 集群节点认证:在 Nacos 集群模式下,不同节点之间需要验证身份,防止非法节点加入。
- 客户端-服务端认证:某些场景下,Nacos 客户端(如微服务)需要携带该密钥访问服务端,确保请求来自受信任的客户端。
配置方式
- 临时启动时指定(测试用):
sh startup.sh -m standalone --nacos.core.auth.server.identity.key=你的Base64密钥
- 永久配置(修改 <font style="color:rgb(36, 41, 47);">conf/application.properties</font>):
# 以下是示例值,需替换成你自己的
nacos.core.auth.server.identity.key=dGhpcyBpcyBhIHNlY3JldCBrZXkgZm9yIG5hY29zIQ==
3. 客户端配置(如果需要)
如果 Nacos 客户端(如 Spring Cloud Alibaba)需要认证,需在客户端配置相同的密钥:
spring:
cloud:
nacos:
discovery:
username: nacos
password: nacos
# 如果启用了身份认证,需配置密钥,以下是示例值,需替换成你自己的
identity-key: dGhpcyBpcyBhIHNlY3JldCBrZXkgZm9yIG5hY29zIQ==
注意事项
- 生产环境必须自定义密钥,不要使用默认值或示例密钥。
- 集群模式下所有节点必须使用相同的密钥,否则节点间无法通信。
- 如果只是单机测试,可以临时生成一个密钥,但正式环境务必妥善保管。
设置完成后,重启 Nacos 即可生效。
2.3、nacos.core.auth.server.identity.value
nacos.core.auth.server.identity.value 是 Nacos 服务端身份认证的值,通常与
nacos.core.auth.server.identity.key 配合使用,用于 增强 Nacos 服务端和客户端之间的安全认证。
作用
- 身份校验: 当 Nacos 客户端(如微服务)访问 Nacos 服务端时,服务端会验证客户端是否携带正确的 <font style="color:#000000;">key</font> 和 <font style="color:#000000;">value</font>,确保请求来源可信。 在 Nacos 集群模式 下,节点间通信也会校验该值,防止非法节点加入集群。
- 防止未授权访问: 类似于 API 访问的 "Token" 机制,避免未授权的客户端或恶意节点访问 Nacos 服务。
配置方式
- 临时启动时指定(测试用):
sh startup.sh -m standalone \
--nacos.core.auth.server.identity.key=your_key \
--nacos.core.auth.server.identity.value=your_value
- 永久配置(修改 <font style="color:#000000;">conf/application.properties</font>):
nacos.core.auth.server.identity.key=your_key
nacos.core.auth.server.identity.value=a1b2c3d4e5f67890abcdef1234567890
客户端配置(如果需要)
如果 Nacos 客户端(如 Spring Cloud Alibaba)需要认证,需在客户端配置相同的 <font style="color:#000000;">key</font> 和 <font style="color:#000000;">value</font>:
spring:
cloud:
nacos:
discovery:
username: nacos
password: nacos
identity-key: your_key # 与服务端一致
identity-value: your_value # 与服务端一致
注意事项
- **生产环境必须自定义 <font style="color:#000000;">key</font> 和 **<font style="color:#000000;">value</font>,不要使用默认值或示例值。
- **集群模式下所有节点必须使用相同的 <font style="color:#000000;">key</font> 和 **<font style="color:#000000;">value</font>,否则节点间无法通信。
- 客户端和服务端必须匹配,否则客户端无法注册或发现服务。
- 如果只是本地测试,可以临时设置,但正式环境务必妥善保管。
设置完成后,重启 Nacos 即可生效。
2、端口修改-可选
nacos3.0.0默认会占用两个端口:8080和8848,如果你机器这两个端口已经被占用了,可以进行端口修改!
编辑配置文件,这里相对路径在
nacos/conf/application.properties下,根据你自己解压的目录动态调整
vim /home/ubuntu/nacos/nacos/conf/application.properties
找到nacos.server.main.port和nacos.console.port,修改为你机器没有被占用的端口
3、切换到nacos的bin目录下
从上一步可以看到,我压缩包下载到了/home/ubuntu/nacos下,再加压完zip包,所以会有2个nacos层级,大家根据自己服务器切换到解压后的nacos/bin目录下
cd /home/ubuntu/nacos/nacos/bin
可以看到该目录下有快捷启动脚本
4、启动Nacos
单机模式启动(适用于测试环境)
ubuntu系统启动命令
bash startup.sh -m standalone
其余Linux系统启动命令
sh startup.sh -m standalone
执行启动命令时会要求你输入这三个参数的值,我们在第一步时候已经准备好了,直接粘贴过来就可以了
集群模式启动(适用于生产环境,必须最少3台服务才能启动集群模式)
配置cluster.conf文件,压缩包解压后默认有cluster.conf.example示例文件,拷贝一份出来到cluster.conf
cp cluster.conf.example cluster.conf
编辑集群配置文件
vim cluster.conf
这里需要3台机器以上,改成你自己机器对应的ip,默认的8848端口如果有做变更也进行相应调整
编辑配置文件修改数据库配置
vim ~/nacos/nacos/conf/application.properties
集群模式会使用到数据库,放开以下Mysql注释,并改成你自己mysql的连接信息!
配置文件里继续修改鉴权配置,自3.0.0版本开始,Nacos控制台默认开启访问鉴权,所以鉴权相关配置必须进行配置,这三个参数就是前面参数准备时生成的那三个
## 开启客户端访问鉴权,默认为关闭,可选
nacos.core.auth.enabled=true
## 开启控制台访问鉴权,默认为开启
nacos.core.auth.console.enabled=true
nacos.core.auth.system.type=nacos
nacos.core.auth.plugin.nacos.token.secret.key=${自定义,保证所有节点一致}
nacos.core.auth.server.identity.key=${自定义,保证所有节点一致}
nacos.core.auth.server.identity.value=${自定义,保证所有节点一致}
接下来,就是启动Nacos了
# Linux/Unix/Mac
sh startup.sh
# Ubuntu系统使用以下命令
bash startup.sh
五、查看启动结果
1、切到启动日志文件夹
/home/ubuntu/nacos/nacos/logs/
2、查看startup.log
使用以下命令查看日志启动结果
tail -100f startup.log
如果启动失败了日志里面会详细打印描述
3、修改配置文件
编辑配置文件,这里前面路径改成你自己服务器的,配置文件相对路径在
nacos/conf/application.properties
vim /home/ubuntu/nacos/nacos/conf/application.properties
检查这三个值,是否都有正确填充,没有则重新编辑保存下
4、重启Nacos
单机模式
# 进入 Nacos 的 bin 目录
cd ~/nacos/bin
# 先停止服务
sh shutdown.sh
# 再启动服务(单机模式)
sh startup.sh -m standalone
# ubuntu系统使用以下命令启动
bash startup.sh -m standalone
集群模式(cluster)重启
# 进入每个节点的 bin 目录
cd ~/nacos/bin
# 逐个节点执行停止(每个节点都需要操作)
sh shutdown.sh
# 逐个节点启动(所有节点启动完成才算集群恢复)
sh startup.sh -m cluster
# ubuntu系统使用以下命令启动
bash startup.sh -m cluster
注意事项
- 集群模式:重启时要确保所有节点按顺序操作,避免集群脑裂。
- 数据安全:如果启用了鉴权,重启后客户端可能需要重新登录获取 Token。
- 依赖服务:如果 Nacos 依赖 MySQL 等数据库,确保数据库服务已正常运行。
5、成功启动
startup.log成功启动页面如下
六、打开Linux服务器端口防火墙
七、登录Nacos控制台页面
进到你的云服务器控制台页面:http://{云服务器公网ip}:8080/index.html
1、初始化密码
首次登录控制台输入用户名密码会自动进行初始化
2、使用刚初始化的账号密码登录
可以看到已成功登录上了,接下来就可以进行相关配置处理了
八、配置数据库(单机模式可选配)
1、配置Mysql数据库
进到你自己的mysql数据库,创建完库后,在库下初始化以下表
/******************************************/
/* 表名称 = config_info */
/******************************************/
CREATE TABLE `config_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) DEFAULT NULL COMMENT 'group_id',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256) DEFAULT NULL COMMENT 'configuration description',
`c_use` varchar(64) DEFAULT NULL COMMENT 'configuration usage',
`effect` varchar(64) DEFAULT NULL COMMENT '配置生效的描述',
`type` varchar(64) DEFAULT NULL COMMENT '配置的类型',
`c_schema` text COMMENT '配置的模式',
`encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`, `group_id`, `tenant_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = 'config_info';
/******************************************/
/* 表名称 = config_info since 2.5.0 */
/******************************************/
CREATE TABLE `config_info_gray` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`src_user` text COMMENT 'src_user',
`src_ip` varchar(100) DEFAULT NULL COMMENT 'src_ip',
`gmt_create` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_create',
`gmt_modified` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_modified',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`gray_name` varchar(128) NOT NULL COMMENT 'gray_name',
`gray_rule` text NOT NULL COMMENT 'gray_rule',
`encrypted_data_key` varchar(256) NOT NULL DEFAULT '' COMMENT 'encrypted_data_key',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfogray_datagrouptenantgray` (`data_id`, `group_id`, `tenant_id`, `gray_name`),
KEY `idx_dataid_gmt_modified` (`data_id`, `gmt_modified`),
KEY `idx_gmt_modified` (`gmt_modified`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8 COMMENT = 'config_info_gray';
/******************************************/
/* 表名称 = config_tags_relation */
/******************************************/
CREATE TABLE `config_tags_relation` (
`id` bigint(20) NOT NULL COMMENT 'id',
`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`nid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识',
PRIMARY KEY (`nid`),
UNIQUE KEY `uk_configtagrelation_configidtag` (`id`, `tag_name`, `tag_type`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = 'config_tag_relation';
/******************************************/
/* 表名称 = group_capacity */
/******************************************/
CREATE TABLE `group_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '集群、各Group容量信息表';
/******************************************/
/* 表名称 = his_config_info */
/******************************************/
CREATE TABLE `his_config_info` (
`id` bigint(20) unsigned NOT NULL COMMENT 'id',
`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`op_type` char(10) DEFAULT NULL COMMENT 'operation type',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥',
`publish_type` varchar(50) DEFAULT 'formal' COMMENT 'publish type gray or formal',
`gray_name` varchar(50) DEFAULT NULL COMMENT 'gray name',
`ext_info` longtext DEFAULT NULL COMMENT 'ext info',
PRIMARY KEY (`nid`),
KEY `idx_gmt_create` (`gmt_create`),
KEY `idx_gmt_modified` (`gmt_modified`),
KEY `idx_did` (`data_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '多租户改造';
/******************************************/
/* 表名称 = tenant_capacity */
/******************************************/
CREATE TABLE `tenant_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '租户容量信息表';
CREATE TABLE `tenant_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`kp` varchar(128) NOT NULL COMMENT 'kp',
`tenant_id` varchar(128) default '' COMMENT 'tenant_id',
`tenant_name` varchar(128) default '' COMMENT 'tenant_name',
`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`, `tenant_id`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = 'tenant_info';
CREATE TABLE `users` (
`username` varchar(50) NOT NULL PRIMARY KEY COMMENT 'username',
`password` varchar(500) NOT NULL COMMENT 'password',
`enabled` boolean NOT NULL COMMENT 'enabled'
);
CREATE TABLE `roles` (
`username` varchar(50) NOT NULL COMMENT 'username',
`role` varchar(50) NOT NULL COMMENT 'role',
UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);
CREATE TABLE `permissions` (
`role` varchar(50) NOT NULL COMMENT 'role',
`resource` varchar(128) NOT NULL COMMENT 'resource',
`action` varchar(8) NOT NULL COMMENT 'action',
UNIQUE INDEX `uk_role_permission` (`role`, `resource`, `action`) USING BTREE
);
这些初始化表信息默认存放在nacos/conf/mysql-schema.sql下
2、切换使用Mysql存储配置信息
单机模式可以选择配置,不配的话所有配置文件会默认存储到本地服务器文件!
集群模式部署则是必配,全部nacos的配置文件会存储在数据库内!
# 修改数据库配置文件
vim ~/nacos/nacos/conf/application.properties
打开以下配置参数,值改成你上面的Mysql数据库连接信息
Nacos3.0客户端接入步骤
官网详细接入文档:
https://www.nacos.io/docs/v3.0/ecology/use-nacos-with-spring-boot3/
SpringBoot工程添加依赖
1、pom.xml文件添加依赖配置
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-alibaba-nacos-config</artifactId>
<version>2023.0.3.2</version>
</dependency>
2、在 <font style="color:rgb(53, 56, 65);background-color:rgb(237, 238, 243);">application.properties</font> 中配置 Nacos server 的地址
spring.application.name=springboot3x
spring.config.import[0]=nacos:springboot3x.properties?group=DEFAULT_GROUP
spring.nacos.config.server-addr=127.0.0.1:8848
SpringCloud工程添加依赖
1、pom.xml文件添加依赖配置
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2023.0.3.2</version>
</dependency>
2、在 <font style="color:rgb(53, 56, 65);background-color:rgb(237, 238, 243);">application.properties</font> 中配置 Nacos server 的地址
spring.application.name=springclouddemo2023x
spring.config.import[0]=nacos:springclouddemo2023x.properties?group=DEFAULT_GROUP
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
版本映射关系
参考官网:
https://sca.aliyun.com/docs/2023/overview/version-explain/
结语
Nacos 3.0的发布标志着云原生服务治理进入智能化新阶段。无论是传统微服务架构还是新兴AI应用场景,这一版本都提供了强有力的支持。建议开发团队在升级前详细评估兼容性需求,特别是环境依赖和认证配置方面的变更。随着AI技术的快速发展,Nacos在智能服务治理领域的潜力值得持续关注。