国产化信创浪潮袭来,作为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