Nacos从2.2.0版本开始,可通过SPI机制注入数据源实现插件,并在引入对应数据源实现后,便可在Nacos启动通过读取application.properties配置文件spring.datasource.platform配置选择加载对应数据源插件.本文档详细介绍一个数据源插件如何实现以及如何使其生效

注意: 目前多数据源插件处于Beta测试阶段,其API及接口方法定义可能会在后续版本升级而有较大修改,请注意您的插件适用版本

插件化实现

在原来的Config模块中,所有的SQL操作执行通过直接使用JdbcTemplate执行固定SQL语句的形式,使得SQL语句业务逻辑高度耦合,并且只支持Derby与MySQL两种数据源,原有Config模块架构如下

现在的多数据源插件通过SPI机制,将SQL操作按照数据表进行抽象多个Mapper接口,Mapper接口的实现类需要按照不同的数据编写对应的SQL方言实现; 现在插件默认提供Derby以及MySQL的Mapper实现,可直接使用;而其他的数据源则需要用户使用数据源插件进行加载,其改造后架构图如下

如何使用

  1. 用户查询当前Nacos是否支持所需数据源,Nacos默认提供Derby以及MySQL的实现,若暂未支持参考下面插件编写如何开发步骤开发插件自己使用或贡献;
  2. application.properties配置文件中将spring.datasource.platform修改对应数据名称,并配置数据相关参数
  3. 然后编译运行则可支持此数据源;

插件编写如何开发

  1. 引入nacos-datasource-plugin依赖
  2. 实现com.alibaba.nacos.plugin.datasource.mapper包下数据表对应Mapper接口中的特殊SQL方法,主要是涉及分页等方言差别,可参考com.alibaba.nacos.plugin.datasource.impl下Derby以及MySQL的实现,只需实现对应接口即可接口与表对应关系如下
数据库 Mapper
config_info_aggr ConfigInfoAggrMapper
config_info_beta ConfigInfoBetaMapper
config_info ConfigInfoMapper
config_info_tag ConfigInfoTagMapper
config_tags_relation ConfigTagsRelationMapper
his_config_info HistoryConfigInfoMapper
  1. 编写SPI配置文件,其名字com.alibaba.nacos.plugin.datasource.mapper.Mapper写入实现Mapper接口的类,可参考config模块中Derby与MySQL配置文件
  2. 插件使用者可以通过依赖此插件,达到实现对应数据源操作效果
  3. 编译运行

如何编译

编译插件之前需要先编译nacos安装本地仓库.

  1. git clone git@github.com:alibaba/nacos.git
  2. cd nacos && mvn -B clean package install -Dmaven.test.skip=true

若出现revision变量无法解析,请更新maven最新版

  1. git clone #{对应数据源插件实现Git地址}
  2. mvn install

建议上传公司maven仓库

未来方案

未来的版本更新如下:

 

原文出自:nacos官网

原文地址:https://blog.csdn.net/leesinbad/article/details/134726101

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_27804.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注