Bootstrap

nacos 支持信创数据库 PostgreSQL

nacos 支持信创数据库 PostgreSQL

在这里插入图片描述
在这里插入图片描述

国产化信创浪潮袭来,作为SpringCloud生态圈首选的国产注册中心Nacos需要适配国产化数据库,Nacos官方仅提供了MySQL数据库支持,但这并不满足信创化的需求。

本文通过Nacos的插件化机制实现了PostgreSQL数据库适配,这里要说明的国产化众多数据库中均是基于PostgreSQL源码改造过来,比如人大金仓PG版,因此基于PostgreSQL数据库实现的Nacos持久化存储,是满足信创化需求的。

国内多个开源项目的方案基于Nacos的源码来源做了一些魔改,并通过二次打包实现改造版的Nacos,笔者认为该方式不利于后期维护,因为Nacos本身一直在持续迭代,这样就存在每次都需要同步源码,成本太高,放弃了这种做法。

本文使用Nacos官方包+PostgreSQL插件形式,对官方的源码不做任何侵入改造,仅维护插件,方便后期的持续更新。同时提供了物理裸机和容器两套环境下的部署指南。

资源说明

搜索研究了多个开源项目,经过代码改造、测试验证,将成果做了整理。

本文最后有资源下载链接。

通过这些资源,可直接使用支持PostgreSQL的Nacos到你的项目中。

资源清单目录如下:

- application.properties                     # nacos示例配置
- nacos-pgsql.sql                            # pgsql数据源的初始化sql
- v2.2
  - nacos-datasource-plugin-pgsql-2.2.0.jar  # 2.2版本的插件jar包
- v2.3
  - nacos-datasource-plugin-pgsql-2.3.0.jar  # 2.3版本的插件jar包
- docker
  - Dockerfile                               # 镜像构建文件
  - docker-startup.sh                        # 镜像构建需要的启动脚本
物理机部署

1、下载插件jar包,并放入plugins文件夹下

2、修改配置

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=pgsql

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

### Connect URL of DB:
# 部署时请修改数据库服务器ip port 数据库名
db.url.0=jdbc:postgresql://127.0.0.1:5432/nacos?tcpKeepAlive=true&reWriteBatchedInserts=true&ApplicationName=nacos_java
# 部署时请修改数据库用户名
db.user.0=nacos
# 部署时请修改数据库密码
db.password.0=nacos@123
db.pool.config.driverClassName=org.postgresql.Driver

3、导入数据库,注意需要将当前会话的 search_path修改为public,否则会导致导入sql失败

#创建用户,建议单独创建一个用户
CREATE ROLE nacos WITH LOGIN PASSWORD 'nacos@123';
#创建数据库
CREATE DATABASE nacos WITH OWNER = nacos;
#修改nacos-pgsql.sql中设置模式的语句
SELECT pg_catalog.set_config('search_path', 'public', false);
#云盘中的nacos-pgsql.sql
psql -U postgres -d nacos -f ./nacos-pgsql.sql

4、启动nacos

windows上单机启动

cd nacos
bin\startup.cmd -m standalone

linux上单机启动

cd nacos/
./bin/startup.sh -m standalone
docker部署

基于dockerhub上官方的镜像,在此基础上叠加上插件和配置

dockerfile如下

FROM nacos/nacos-server:v2.3.1-slim

COPY nacos-datasource-plugin-pgsql-2.3.0.jar /home/nacos/plugins/

# 修改了脚本docker-startup.sh
# export CUSTOM_SEARCH_LOCATIONS=file:${BASE_DIR}/conf/,optional:file:${BASE_DIR}/conf/*/
# 启动时将外部配置文件映射到 /home/nacos/conf/pg/application.properties
COPY docker-startup.sh /home/nacos/bin/

RUN chmod +x /home/nacos/bin/docker-startup.sh

# tag nacos/nacos-server:v2.3.1-pg

docker启动示例

# 将修改好带pg数据库配置的application.properties放到当前目录下,通过卷映射到容器中
docker run -p 8848:8848 -p 8849:8849 -p 9848:9848 -v $PWD/application.properties:/home/nacos/conf/pg/application.properties -e MODE=standalone -d nacos/nacos-server:v2.3.1-pg

注意Nacos的3个端口必须保持固定的差值。port1,port2=port1+1,port3=port1+1000

资源链接如下:
链接:https://pan.baidu.com/s/1l4RoyWvnV_7SZQQMPw8Ppg?pwd=05kj
提取码:05kj

;