建站园,网站html5模板,平凉崆峒建设局网站,wordpress媒体库查询页Nacos从2.2.0版本开始,可通过SPI机制注入多数据源实现插件,并在引入对应数据源实现后,便可在Nacos启动时通过读取application.properties配置文件中spring.datasource.platform配置项选择加载对应多数据源插件.本文档详细介绍一个多数据源插件如何实现以及如何使其生效。 注意:…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实现可直接使用而其他的数据源则需要用户使用数据源插件进行加载其改造后架构图如下。 如何使用
用户查询当前Nacos是否支持所需数据源Nacos默认提供Derby以及MySQL的实现若暂未支持可参考下面插件编写者如何开发步骤开发插件自己使用或贡献在application.properties配置文件中将spring.datasource.platform修改为对应的数据源名称并配置数据源相关参数然后编译运行则可支持此数据源
插件编写者如何开发
引入nacos-datasource-plugin依赖实现com.alibaba.nacos.plugin.datasource.mapper包下数据表对应Mapper接口中的特殊SQL方法主要是涉及分页等方言差别可参考com.alibaba.nacos.plugin.datasource.impl下Derby以及MySQL的实现只需实现对应接口即可。接口与表对应关系如下
数据库表Mapperconfig_info_aggrConfigInfoAggrMapperconfig_info_betaConfigInfoBetaMapperconfig_infoConfigInfoMapperconfig_info_tagConfigInfoTagMapperconfig_tags_relationConfigTagsRelationMapperhis_config_infoHistoryConfigInfoMapper
编写SPI配置文件其名字为com.alibaba.nacos.plugin.datasource.mapper.Mapper写入实现Mapper接口的类可参考config模块中Derby与MySQL配置文件。插件使用者则可以通过依赖此插件达到实现对应数据源操作的效果编译运行
如何编译
编译插件之前需要先编译nacos并安装至本地仓库.
git clone gitgithub.com:alibaba/nacos.gitcd nacos mvn -B clean package install -Dmaven.test.skiptrue 若出现revision变量无法解析,请更新maven至最新版本 git clone #{对应数据源插件实现Git地址}mvn install
建议上传到公司的maven仓库
未来方案
未来的版本更新如下: 继续细分SQL在现有的基础上减少SQL语句的同时对动态SQL的实现更加友好 抽离不同数据源之间的差异列表并通过配置文件或配置类的方式进行差异列表的替换方便插件编写者编写插件 原文出自nacos官网