Nacos-3.0.0适配PostgreSQL数据库_nacos3.0.0 postgres插件

在这里插入图片描述

Nacos-3.0.0适配PostgreSQL数据库

引言

前段时间写了一篇文章叫“Nacos-2.4.0最新版本,postgresql插件适配器修改分享”,旨在解决nacos适配PostgreSQL数据库的问题,因为阿里巴巴nacos开发团队太忙了,一直忙着迭代开发nacos,给大家持续贡献更多更优秀的功能。

但是每次发布nacos版本时,却忘了及时更新nacos对应的其他数据源支持,比如大家常用的PostgreSQL数据库,就有好多伙伴在网上搜索nacos的PostgreSQL数据库支持插件!却很难找到一个现成能用的,最终都只能接受一个办法,那就是下载nacos的多数据源项目源码自己在本地修改bug后打包!有这类需求的朋友,心里应该都清楚,几经折腾很想放弃,但是心有不甘,好不容易走到下载代码后,修改打包这一步,换来的却是无数次失败,真的够大家使劲折腾一番!


好了,废话不多说,相信大家都知道了,前几天nacos官方发出了新版本3.0.0正式版,这个版本可谓是花了不少心血啊,前后差不多耗时三五个月,新版本确实有很多大家备受期待的功能,比如:

  1. 身份验证机制‌:支持多种身份验证方式,如OAuth 2.0JWT,确保只有经过授权的用户才能访问敏感数据。
  2. 细粒度权限控制‌:管理员可以为不同的用户和角色设置详细的权限,实现更精细的访问控制。
  3. 加密算法‌:引入更强大的加密算法,如AES-256,确保数据在传输和存储过程中的安全性‌。
  4. 配置灰度管理‌:支持记录配置灰度历史,方便用户在配置灰度变更后能够查询到之前的变更历史记录和内容,提升了配置变更期间的稳定性和可用性‌。
  5. 寻址逻辑统一‌:优化了客户端和服务端的寻址模块,减少了代码冗余,提高了系统的稳定性和可维护性‌。

看到这些新特性,相信大家心里应该都迫不及待想体验了,不过对于使用MySQL的朋友们,确实很方便,不需要那么折腾,因为nacos自身默认使用的就是Mysql,因此本文可能不太需要关注。但是对于想用其他数据库的朋友们,比如想基于PostgreSQL数据库存储nacos数据的朋友们,今天这篇文章就是大家期待的!

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


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

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

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

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

一、PostgreSQL数据库源码地址

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

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

1.1 nacos-3.0.0新增表config_info_gray

config_info_gray这个表是nacos-3.0.0新增的,用于灰度管理配置,支持记录配置灰度历史,方便用户在配置灰度变更后能够查询到之前的变更历史记录和内容,提升了配置变更期间的稳定性和可用性‌。以下是该表的postgresql适配。

DROP TABLE IF EXISTS "config_info_gray";
CREATE TABLE "config_info_gray" (
  "id" bigserial NOT NULL,
  "data_id" varchar(255) NOT NULL,
  "group_id" varchar(128) NOT NULL,
  "content" text NOT NULL,
  "md5" varchar(32),
  "src_user" text,
  "src_ip" varchar(100) NOT NULL,
  "gmt_create" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "gmt_modified" timestamp(6) NOT NULL,
  "app_name" varchar(128) DEFAULT NULL::character varying,
  "tenant_id" varchar(128) DEFAULT ''::character varying,
  "gray_name" varchar(128) NOT NULL,
  "gray_rule" text NOT NULL,
  "encrypted_data_key" varchar(256) NOT NULL
);
COMMENT ON COLUMN "config_info_gray"."id" IS '自增ID';
COMMENT ON COLUMN "config_info_gray"."data_id" IS 'data_id';
COMMENT ON COLUMN "config_info_gray"."group_id" IS 'group_id';
COMMENT ON COLUMN "config_info_gray"."content" IS 'content';
COMMENT ON COLUMN "config_info_gray"."md5" IS 'md5';
COMMENT ON COLUMN "config_info_gray"."src_user" IS 'src_user';
COMMENT ON COLUMN "config_info_gray"."src_ip" IS 'src_ip';
COMMENT ON COLUMN "config_info_gray"."gmt_create" IS 'gmt_create';
COMMENT ON COLUMN "config_info_gray"."gmt_modified" IS 'gmt_modified';
COMMENT ON COLUMN "config_info_gray"."app_name" IS 'app_name';
COMMENT ON COLUMN "config_info_gray"."tenant_id" IS 'tenant_id';
COMMENT ON COLUMN "config_info_gray"."gray_name" IS 'gray_name';
COMMENT ON COLUMN "config_info_gray"."gray_rule" IS 'gray_rule';
COMMENT ON COLUMN "config_info_gray"."encrypted_data_key" IS 'encrypted_data_key';

-- ----------------------------
-- Primary Key structure for table config_info_gray
-- ----------------------------
ALTER TABLE "config_info_gray" ADD CONSTRAINT "config_info_gray_pkey" PRIMARY KEY ("id");

1.2 nacos-3.0.0废弃表config_info_aggr

config_info_aggr表在Nacos 3.0版本中不存在了‌。在Nacos的早期版本中,config_info_aggr表用于存储聚合后的配置信息,主要用于集群环境中配置信息的聚合和同步。然而,在Nacos 3.0版本中,这一功能已经被重新设计和优化,不再依赖于单独的config_info_aggr表来实现。

1.3 Nacos 3.0中的变化

Nacos 3.0版本对配置管理进行了重大改进,主要包括以下几个方面:

  1. 去中心化存储‌:在Nacos 3.0中,配置信息不再集中存储在单一的数据库表中,而是分散存储在多个表中,每个服务或命名空间都有自己的数据表。这种设计减少了单一故障点,提高了系统的可靠性和扩展性。
  2. 优化查询性能‌:通过改进查询逻辑和索引策略,Nacos 3.0显著提升了查询性能,尤其是在大规模配置管理场景下。
  3. 更好的兼容性和扩展性‌:新版本支持更多的数据库类型和更灵活的配置管理策略,使得Nacos能够更好地适应不同的使用场景和需求。

Nacos 3.0版本的功能改进

Nacos 3.0不仅去除了config_info_aggr表,还引入了其他重要的功能和改进:

  1. 更强的扩展性‌:支持更多的服务发现和配置管理场景,包括微服务架构、云原生应用等。
  2. 更高的可靠性‌:通过分布式架构设计,提高了系统的稳定性和可用性。
  3. 更好的性能‌:优化了查询和处理速度,尤其是在大数据量下表现更佳。
  4. 更灵活的配置管理‌:支持更细粒度的配置管理和权限控制,满足不同团队和项目的需求。

二、灰度配置适配

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

public abstract class BaseConfigInfoGrayMapper extends AbstractDataSourceMapper implements ConfigInfoGrayMapper
{
    
    /**
     * <pre>构造方法</pre>
     * @since 2025-04-27 10:03
     * @param databaseDialect
     */
    protected BaseConfigInfoGrayMapper(DatabaseDialect databaseDialect)
    {
        super(databaseDialect);
    }
    
    @Override
    public String getTableName()
    {
        return TableConstant.CONFIG_INFO_GRAY;
    }
    
    @Override
    public 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.0版本的扩展插件口进行开发,同时也是基于以下项目的一个分支进行的而开:
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.0/plugins)即可。

  • 以下nacospostgresql插件版本仅支持nacos3.0.0,采用jdk17编译级:
<dependency>
    <groupId>com.sinhy</groupId>
    <artifactId>nacos-postgresql-datasource-plugin-ext</artifactId>
    <version>3.0.0-01</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

大模型岗位需求

大模型时代,企业对人才的需求变了,AIGC相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
在这里插入图片描述

掌握大模型技术你还能拥有更多可能性

• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;

• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;

• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;

• 更优质的项目可以为未来创新创业提供基石。

可能大家都想学习AI大模型技术,也想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把全套AI技术和大模型入门资料、操作变现玩法都打包整理好,希望能够真正帮助到大家。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

零基础入门AI大模型

今天贴心为大家准备好了一系列AI大模型资源,包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

有需要的小伙伴,可以点击下方链接免费领取【保证100%免费

点击领取 《AI大模型&人工智能&入门进阶学习资源包》*

1.学习路线图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果大家想领取完整的学习路线及大模型学习资料包,可以扫下方二维码获取
在这里插入图片描述
👉2.大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。(篇幅有限,仅展示部分)

img

大模型教程

👉3.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(篇幅有限,仅展示部分,公众号内领取)

img

电子书

👉4.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(篇幅有限,仅展示部分,公众号内领取)

img

大模型面试

**因篇幅有限,仅展示部分资料,**有需要的小伙伴,可以点击下方链接免费领取【保证100%免费

点击领取 《AI大模型&人工智能&入门进阶学习资源包》

**或扫描下方二维码领取 **

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员一粟

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值