目录
一、背景
二、个人贡献
三、Nacos使用适配的PostgreSQL插件
3.1、插件源码工程项目结构:
3.2、打包加载插件
3.3、修改配置文件为PostgreSQL连接字符串
3.4、导入数据库脚本文件
四、总结
一、背景
Nacos 是 Dynamic Naming and Configuration-Service 的首字母简称,定位于一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos的开源社区目前应该是很活跃了,2022年12月14日,官方发布了Nacos2.2的正式版,也是目前最新且最稳定的版本了,估计会代替2.1用一段时间了,在该版本中添加了数个新的插件支持,例如 数据源插件、自定义环境变量插件 等等,比如用数据源插件扩展接口,开发者可实现配置中心数据库存储的适配;比如用自定义环境变量插件接口,允许通过插件的方式对nacos服务端启动时的配置进行特殊处理,比如可以配置数据库密码为密文,在插件中进行解密,以此来支持配置加密数据库密码以及后续可能有的其他关于配置特殊处理的需求。
2.2版本个人有幸参与其开源贡献,并提交了几个简单的Pull Request,去减少下之前代码中一些固定写死的内容。数据源插件改造适配的工作核心开发者主要为社区的某位黄同学和李老师。
二、个人贡献
目前个人为Nacos提交的PR记录为9个,虽然不是核心改动,但是至少是踏进了开源社区的大门,提交记录截图如下,标红框的为本次中一些写死内容的判断更改:
之前的版本中,Nacos仅支持MySQL、Derby作为底层配置中的数据存储,2.2版本开始,提供了数据库插件扩展接口,允许开发者自定义开发适配数据库插件。目前我已经基于Nacos2.2的最新代码分支,进行了简单的PostgreSQL数据库的适配,在之前8月份的时候,个人为2.1.0版本适配了下PostgreSQL、Oracle、达梦等数据库,虽然目前可能存在一些未测试到的问题,但是希望大家一起参与测试和贡献,和大家一些修复和优化,提升自己对Nacos的认知。
访问我的Github主页获得Nacos2.2的PostgreSQL数据库适配的项目代码,可自行打包编译。
Nacos2.2 PostgreSQL适配插件地址:
https://github.com/wuchubuzai2018/nacos-datasource-extend-plugins
Nacos2.1 Nacos多数据源适配项目(支持Oracle、PostgreSQL、达梦),目前持续发现测试问题,并进行修复中,感兴趣的一起来优化和修复哦:
https://github.com/wuchubuzai2018/nacos-multidatasource
三、Nacos使用适配的PostgreSQL插件
Nacos2.2提供了插件扩展点让开发者适配,个人基于扩展口,进行了抽象,封装出公共的数据库方言类,对于一些类似的数据库,可以继承相关方言即可。这里介绍下个人开发的PostgreSQL数据库插件的说明:
3.1、插件源码工程项目结构:
下载源码工程,结构如下:
nacos-datasource-plugin-ext工程主目录
----nacos-datasource-plugin-ext-base工程设计为数据库插件操作的适配抽象。
----nacos-all-datasource-plugin-ext工程计划可打包所有适配的数据库插件
----nacos-postgresql-datasource-plugin-ext工程可打包适配Postgresql的数据库插件
3.2、打包加载插件
下载当前插件项目源码,打包为jar包,将该jar文件放到某个目录中,然后在startup.sh文件中,使用Nacos的loader.path机制指定该插件的路径,可修改startup.sh中的loader.path参数的位置进行指定,这样就会加载我们的jar包文件。
3.3、修改配置文件为PostgreSQL连接字符串
在application.properties文件中声明postgresql的配置信息:
spring.datasource.platform=postgresql
db.url.0=jdbc:postgresql://127.0.0.1:5432/nacos?tcpKeepAlive=true&reWriteBatchedInserts=true&ApplicationName=nacos_java
db.user=nacos
db.password=nacos
db.pool.config.driverClassName=org.postgresql.Driver
注意:这里需要配置属性db.pool.config.driverClassName,默认如果不传递的则是MySQL的驱动路径,这里的简单判断逻辑也是我提交的PR。
3.4、导入数据库脚本文件
导入nacos-postgresql的脚本文件,脚本文件在nacos-postgresql-datasource-plugin-ext/src/main/resources/schema文件夹下面.
上面操作完成后,启动Nacos即可,如果在启动的过程中,出现no DataSource Set之类的错误,基本就是数据库链接参数的问题,自己可以进行相关的排查操作。
四、总结
Nacos的源码是很值得我们程序员去学习的,因为它比较像是一个业务功能类的中间件系统,学习大厂程序员的开发规范和设计思想,且内部用到了大量的并发编程的知识点,也是很有帮助的。
Nacos 是阿里巴巴微服务领域开源项目的活跃度排行第一,也得益于开源协作模式,并且在 Nacos 中有大量国内外知名公司的核心贡献者,其中也包含就职在腾讯、华为、小米等等知名企业的同学,也正是社区整体的贡献者和用户在帮助 Nacos 成长,让 Nacos 逐步完善生态,支持几乎所有主流语言,整合更多开源生态,也正是用户和社区贡献者让 Nacos 为企业数字化转型首选产品。
感兴趣的可以关注我,后续看看再分享开发和使用该数据源插件的一些细节性问题。
本文首发于我的微信公众平台,感兴趣的可以关注我《无处不在的技术》,一起交流。
根据最近刚发布的《2022 中国开源发展蓝皮书》报告中显示,Github 中国项目活跃度 TOP 20,Nacos 排名全国第六,作为基础类型云原生中间件,能有如此活跃度是非常不容易的。