Nacos-3.1.1 PostgreSQL数据库适配插件: (2025年12月08日) 最新版

王者杯·14天创作挑战营·第8期 10w+人浏览 356人参与

🧑 博主简介CSDN博客专家历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可关注公众号 “ 心海云图 ” 微信小程序搜索“历代文学”)总架构师,16年工作经验,精通Java编程高并发设计分布式系统架构设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
🤝商务合作:请搜索或扫码关注微信公众号 “ 心海云图

在这里插入图片描述

在这里插入图片描述

Nacos-3.1.1 适配PostgreSQL数据库

在这里插入图片描述

引言


Nacos 3.1.1 (2025年11月26日) 最新版

本次发布重点增强了Nacos的MCP(模型配置协议)和A2A(智能体到智能体)能力,提升了系统稳定性,并完善了安全与配置管理。主要新增内容包括支持批量注册智能体端点、在导入MCP服务器时合并版本,以及通过overrideExisting选项增强了更新MCP服务器的灵活性。此版本还引入了对入站和出站通信的默认安全配置支持,为安全的AI智能体交互奠定了基础。

本版本的具体变更如下:
功能

  • [#13867] 支持在更新MCP服务器时覆盖现有配置。

  • [#13922] 新增线程池配置以允许核心线程超时。

  • [#13946] 重构AgentEndpoint模型并新增字段以支持高级协议和查询。

  • [#13953] 增加对默认安全配置的支持,包括为入站和出站安全方案提供选择和设置。

  • [#13957] 支持批量注册智能体端点。

  • [#13951] 为控制台模块添加可配置的CORS过滤器。
    增强/重构

  • [#13822] 分离客户端执行器与登录调度执行器的职责,防止线程池耗尽。

  • [#13863] 优化shutdown.sh脚本,将多个PID合并为单行,使进程终止更简洁。

  • [#13911] 增强importToolsFromMcp API以支持流式协议服务器。

  • [#13914] 升级checkStyle插件版本,以改进代码规范检查与可维护性。

  • [#13945] 支持在导入MCP服务器规范时合并版本。

  • [#13963] 重构List配置API以支持返回configTags和描述信息。
    问题修复

  • [#13140] 修复当客户端命名空间为空时,ConfigChangeNotifyRequest的一致性命名空间处理问题。

  • [#13860] 修复ConfigMigrateService中潜在的空指针异常风险。

  • [#13866] 修复在控制台中无法编辑已导入的MCP服务器的问题。

  • [#13869] 修复因缺少依赖注入导致创建’consoleHealthController’ bean失败的错误。

  • [#13877] 修复McpRemoteHandler中的namespaceId问题,该问题导致上下文传播不正确。

  • [#13882] 修复TpsControlManager的同步锁问题,并添加volatile关键字以确保线程安全。

  • [#13884] 修复导入过程中MCP服务器验证API的JSON解析错误。

  • [#13902] 通过更新日志记录器初始化逻辑,修复已弃用的Log4j2包扫描警告。

  • [#13948] 修复通过控制台界面更新智能体卡片失败的问题。

  • [#13959] 修复在独立部署控制台/服务器时密码更新失败的问题。

  • [#13964] 修复当nacos.extension.ai.enabled设置为false时,Nacos启动失败的问题。

本文重点介绍基于Nacos-3.1.1最新版本如何用PostgreSQL数据库来存储Nacos-3.1.0版本最直接最快集成PostgreSQL数据源的方法就是引入依赖,这也是本文重点,也就是核心部分,我把它放这里:

<dependency>
    <groupId>com.sinhy</groupId>
    <artifactId>nacos-postgresql-datasource-plugin-ext</artifactId>
    <version>3.1.1</version>
</dependency>

我已将pg数据源插件打成了jar包,传到maven中央仓库,大家只需下载该jar,然后放入nacoshome目录下的plugins插件目录,再配置pg数据源信息,即可使用!

直接下载该jarhttps://repo1.maven.org/maven2/com/sinhy/nacos-postgresql-datasource-plugin-ext/3.1.1/nacos-postgresql-datasource-plugin-ext-3.1.1.jar

或者从以下连接下载:
https://github.com/lilinhai/nacos-datasource-plugin-ext/releases/download/3.1.1/nacos-postgresql-datasource-plugin-ext-3.1.1.jar

bug修复后启动效果截图:
在这里插入图片描述

docker部署脚本

# NACOS_DEPLOYMENT_TYPE=merged这个必须要设置一个默认值
# 且必须配置成merged才能启动8080端口,否则比如设置成server值,会以服务模式启动,将无法使用管理页面
docker run --name nacos-standalone-pg \
    --network host \
    -v "/data/docker-containers/nacos-server/conf:/home/nacos/conf" \
    -v "/data/docker-containers/nacos-server/logs:/home/nacos/logs" \
    -v "/data/docker-containers/nacos-server/data:/home/nacos/data" \
    -v "/data/docker-containers/nacos-server/plugins:/home/nacos/plugins" \
	-e NACOS_DEPLOYMENT_TYPE=merged \
    -e MODE=standalone \
    -e NACOS_AUTH_ENABLE=true \
    -e NACOS_AUTH_TOKEN=wjKVgujg0+AF/NwEXuQKigQBcwF6mlrcMqsfw5b5mG4= \
    -e NACOS_AUTH_IDENTITY_KEY=NFJGnbMdx4w6S7veTMpLk97fOJm5VBfd \
    -e NACOS_AUTH_IDENTITY_VALUE=n43BTYT9WaSewV1PzIidBWOwIr5OUGu0Kc8boHnFExJgA4O0499srJGjjWgSoKnE \
	-e JAVA_OPT_EXT=" --nacos.core.auth.plugin.nacos.token.secret.key=wjKVgujg0+AF/NwEXuQKigQBcwF6mlrcMqsfw5b5mG4= --nacos.core.auth.server.identity.key=NFJGnbMdx4w6S7veTMpLk97fOJm5VBfd --nacos.core.auth.server.identity.value=n43BTYT9WaSewV1PzIidBWOwIr5OUGu0Kc8boHnFExJgA4O0499srJGjjWgSoKnE --nacos.core.auth.console.enabled=false" \
    -e JVM_XMS=512M \
    -e JVM_XMX=1024M \
    -p 8080:8080 \
    -p 8848:8848 \
    -p 9848:9848 \
    -d registry.cn-hangzhou.aliyuncs.com/sinhy/nacos-server:v3.1.1

一、PostgreSQL数据库源码地址

Nacos-3.1.1PostgreSQL数据库插件源码地址
https://github.com/lilinhai/nacos-datasource-plugin-ext

注意:目前该工程中,只有PostgreSQL插件可以正常使用,其余数据库暂未做相关深入适配和测试!

二、源码打包构建

源码下载本地后,也可以手动打包构建,输出pg插件,如下图:
在这里插入图片描述
执行maven构建命令:

clean package

将输出jar到target目录下:
在这里插入图片描述

将jar拷贝到nacos的plugins目录下即可

三、nacos3.1.1 基于pg启动

启动需要输入安全密钥:
在这里插入图片描述输入后回车、即可访问8080(管理端口)端口:
在这里插入图片描述

四、插件概述

4.1、简介

从Nacos2.2版本开始,Nacos提供了数据源扩展插件,以便让需要进行其他数据库适配的用户自己编写插件来保存数据。当前项目插件目前已简单适配Postgresql。

当前插件项目地址:
https://github.com/lilinhai/nacos-datasource-plugin-ext

当前项目是基于Nacos3.0.1版本的扩展插件口进行开发,同时也是基于以下项目的一个分支进行的而开:
https://github.com/nacos-group/nacos-plugin/tree/develop/nacos-datasource-plugin-ext

很感谢阿里nacos团队的贡献,你们一如既往的迭代nacos版本,给你们说声辛苦了,但是却忘记了nacos的其他数据源适配,比如postgresql

4.2、插件工程结构说明

nacos-datasource-plugin-ext-base工程为数据库插件操作的适配抽象定义。
nacos-postgresql-datasource-plugin-ext工程可打包适配Postgresql的数据库插件

五、下载和使用

5.1、插件引入

方式一:将nacospostgresql插件下载下来,将依赖手动拷贝到nacoshome目录下的plugins目录下(nacos-3.1.1/plugins)即可。

  • 以下nacospostgresql插件版本仅支持nacos3.1.1,采用jdk17编译级:
<dependency>
    <groupId>com.sinhy</groupId>
    <artifactId>nacos-postgresql-datasource-plugin-ext</artifactId>
    <version>3.1.1</version>
</dependency>

方式二:下载当前插件项目源码,打包为jar包,将该文件的路径配置到startup.sh文件中,使用Nacosloader.path机制指定该插件的路径,可修改startup.sh中的loader.path参数的位置进行指定。

5.2、修改数据库配置文件

application.properties文件中声明postgresql的配置信息:

spring.sql.init.platform=postgresql

#spring.datasource.platform=postgresql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:postgresql://127.0.0.1:5432/nacos?currentSchema=public&useUnicode=true&tcpKeepAlive=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&reWriteBatchedInserts=true&ApplicationName=nacos_java
db.user.0=nacos
db.password.0=nacos
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
db.pool.config.driverClassName=org.postgresql.Driver

# 如果是 oracle 则需要改为 SELECT * FROM dual 
# db.pool.config.connectionTestQuery=SELECT 1

5.3、导入Postgresql的数据库脚本文件

导入nacos-postgresql的脚本文件,脚本文件在nacos-postgresql-datasource-plugin-ext/src/main/resources/schema文件夹下面.

上面操作完成后,启动Nacos即可。

六、其他数据库插件开发

可参考nacos-postgresql-datasource-plugin-ext工程,新创建Maven项目,实现AbstractDatabaseDialect类,重写相关的分页操作逻辑与方法,并创建相应的mapper实现。

七、参考资料

https://github.com/nacos-group/nacos-plugin/tree/develop/nacos-datasource-plugin-ext

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

越重天

你的打赏是我精心创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值