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的实现,只需实现对应接口即可。接口与表对应关系如下:
数据库表 | Mapper |
---|---|
config_info_aggr | ConfigInfoAggrMapper |
config_info_beta | ConfigInfoBetaMapper |
config_info | ConfigInfoMapper |
config_info_tag | ConfigInfoTagMapper |
config_tags_relation | ConfigTagsRelationMapper |
his_config_info | HistoryConfigInfoMapper |
- 编写SPI配置文件,其名字为
com.alibaba.nacos.plugin.datasource.mapper.Mapper
,写入实现Mapper接口的类,可参考config模块中Derby与MySQL配置文件。 - 插件使用者则可以通过依赖此插件,达到实现对应数据源操作的效果
- 编译运行
如何编译
- git clone git@github.com:alibaba/nacos.git
- cd nacos && mvn -B clean package install -Dmaven.test.skip=true
未来方案
原文地址:https://blog.csdn.net/leesinbad/article/details/134726101
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_27804.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。