当前位置: 首页 > news >正文

Nacos-3.0.3 适配PostgreSQL数据库

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

在这里插入图片描述


在这里插入图片描述

Nacos-3.0.3 适配PostgreSQL数据库

在这里插入图片描述

引言


本文重点介绍基于Nacos-3.0.3最新版本如何用PostgreSQL数据库来存储,也就是如何打造或直接获取能适配Nacos-3.0.3PostgreSQL数据库插件。


Nacos-3.0.3版本最直接最快集成PostgreSQL数据源的方法就是引入依赖,这也是本文重点,也就是核心部分,我把它放这里:

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

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

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

一、PostgreSQL数据库源码地址

为了方便后续及时更新Nacos每个版本对应的PostgreSQL数据库插件,我们特意基于官方提供的Nacos插件工程进行了二开,然后打算后续自己维护这部分功能,因此给大家分享:
Nacos-3.0.3PostgreSQL数据库插件源码地址
https://github.com/lilinhai/nacos-datasource-plugin-ext

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

二、灰度配置适配

增加了一个抽象类,用于适配其他数据库多灰度配置表的支持:

public abstract class BaseConfigInfoGrayMapper extends AbstractDataSourceMapper implements ConfigInfoGrayMapper
{/*** <pre>构造方法</pre>* @since 2025-04-27 10:03* @param databaseDialect*/protected BaseConfigInfoGrayMapper(DatabaseDialect databaseDialect){super(databaseDialect);}@Overridepublic String getTableName(){return TableConstant.CONFIG_INFO_GRAY;}@Overridepublic MapperResult findAllConfigInfoGrayForDumpAllFetchRows(MapperContext context){String sql = " SELECT id,data_id,group_id,tenant_id,gray_name,gray_rule,app_name,content,md5,gmt_modified " + " FROM  config_info_gray  ORDER BY id ";sql = databaseDialect.getLimitPageSqlWithOffset(sql, context.getStartRow(), context.getPageSize());return new MapperResult(sql, Collections.emptyList());}
}

三、源码打包构建

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

clean package

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

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

四、nacos3.0 基于pg启动

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

五、插件概述

5.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

5.2、插件工程结构说明

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

六、下载和使用

6.1、插件引入

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

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

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

6.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

6.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

http://www.xdnf.cn/news/1397089.html

相关文章:

  • 基于Spring Boot小型超市管理系统的设计与实现(代码+数据库+LW)
  • 如何理解 nacos 1.x 版本的长轮询机制
  • 从咒语到意念:编程语言的世纪演进与人机交互的未来
  • Scala 2安装教程(Windows版)
  • Java网络编程与反射
  • SQLSugar 快速入门:从基础到实战查询与使用指南
  • 人工智能学习:Linux相关面试题
  • Golang 面试题「高级」
  • 美团8-30:编程题
  • Java Stream API并行流性能优化实践指南
  • 在线简历生成工具,免费好用
  • FOC开环控制代码解读
  • git在push和clone等操作时显示‘: Invalid argument
  • 50.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--二期功能规划
  • 使用VBA嵌套字典快速统计生产流转信息
  • Pregel 与 LangGraph:从分布式图计算到现代 AI 智能体的架构演进与 API 深度解析
  • 设计模式:抽象工厂模式(Abstract Factory Pattern)
  • 华为 HarmonyOS 代表未来
  • JS之刷刷
  • Redis-数据类型的常用操作命令
  • 将LLM模型“钉”在电路板上:用电阻矩阵实现物理推理引擎
  • 【ASP.NET Core】双Token机制在ASP.NET Core中的实现
  • DETR:用Transformer革新目标检测的新范式
  • 基于物联网设计的园林灌溉系统(华为云IOT)_274
  • 从单机到分布式:Python 爬虫架构演进
  • 嵌入式Linux学习 - 数据库开发
  • 系统集成项目管理工程师第十二章:执行过程组全解析
  • 操作系统上的Docker安装指南:解锁容器化新世界
  • 进制转换问题
  • Tomcat 企业级运维实战系列(五):Tomcat 优化和安全加固