nacos适配oracle数据库

2,948 阅读4分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情

nacos是目前比较流行的一个框架,是阿里开源的一个框架。可用于配置中心注册中心

配置中心:就是说nacos,可以帮我们管理项目中,需要用到的配置文件,这些配置都可以交给nacos进行管理。配置中心可以实现多个环境的配置管理,多个环境之间配置的动态切换...

注册中心:就是说,我们的一些微服务可以注册到nacos上,然后其他的微服务就能发现,也就能调用到我们的服务。这就是我们常说的服务发现服务注册。当然,如果我们的微服务宕掉了,nacos也可以帮我们检测到,阻止向不健康的微服务发送请求。这就是我们常说的健康检查

废话就不多说了,nacos的入门学习,这里不多做说明了,大家有兴趣的估计都快马加鞭的去找资料进行学习了。

image.png

目前nacos的主版本,底层只支持了mysql数据库,这个确实是很鸡肋了呀!!!

对于某些项目,不是使用mysql的,那确实是个大坑!!!

经过网上找资料,最终还是发现了nacos官方,也是有做改造的,respect!!!

就是这玩意:feature_multiple_datasource_support这个分支,是对多数据源的支持。 mysql,postgresql,oracle

哥们,反手就给他一个么么哒!!!

image.png

那么我们现在就开始干活,拿到源代码,编译成可运行的nacos服务,干它!!!

这个,哥们使用TortoiseGit工具拉取 image.png

然后,我们使用idea打开这个项目:nacos的项目结构如下:

image.png

然后,我们来直接跑起这个项目: 启动类就是这个Nacos.java了呀!!! 直接run它喽!!!

image.png

好家伙,直接运行报错了!!! image.png

这个错,比较恶心,会误导我们找错方向。

'xxx.UsersRepository' available: expected at least 1 bean which qualifies as autowire candidate

一般人都会以为,是不是找不到这个类,spring无法扫描到?实际上不是,下面我们一一道来!!!

nacos不指定启动模式,默认是以集群方式启动,集群方式,就需要用到外部数据源,默认一开始没有配置外部数据源,所以导致数据源初始不成功,然后就报了这个错了。

那么这样的话,我们指定以单机模式启动,不就好了?

-Dnacos.standalone=true

确实如此呀,牛牛牛!!!

image.png

image.png

从上图可以看到,确实是启动成功了,但有个致命的问题,就是这玩意:

 use embedded storage

百度翻译如下:

image.png

好家伙,这个默认使用了嵌入式存储,就是说nacos使用了内部数据源了,这里咱们姑且说,nacos使用了内存吧(可能不太对,别喷!!!)

那还是不行呀,我们今天要搞的是nacos适配oracle呀,那我们还是得想办法,让nacos使用外部数据源才行。

别急,咱们继续往下说!!!

有个application.properties文件,可以配置外部数据源的。 image.png

是不是很亲切了呀!!!

那我们拷贝一份,mysql的配置,然后配一下oracle的,不就行了嘛。。。

哈哈,好家伙,还是被你装到了!!!

image.png

image.png

说到这,那我们不是得创建数据库,和表嘛,sql语句,在哪?

哈哈,别急,在这里呢,都给你准备好了

image.png

来了,执行一下,就好了。

重新启动项目,成功了!!!

image.png

use embedded storage

好家伙,怎么又是这个,难道还未生效?

别急,咱们测试一下,搞个配置文件试试看,有无保存到oracle数据库即可。

image.png

image.png

测试,是可以保存到oracle数据库的,牛牛牛!!!

image.png

那我们也可以从代码方面确认下,看看有无初始化ExternalStorage外部存储即可。

image.png

断点在这里,可以看到这个返回的true

image.png

  • 原因分析一下呗?好的,哥们满足你的需求哈,来来来,继续往下看喽!!!

至于为什么没有输出use external storage,这里哥们也看了一下源码,发现是少了一个配置spring.datasource.platform image.png

这个配置的作用,哥们估计,也就一个标识吧,实际上没有,也不会影响项目的整体运行。

那咱们加上试试看,最终的效果喽!!!

image.png

image.png

好的,最后可以看到,最终的效果,就是咱们所设想的喽!!!完美!!!^_^

use external storage

好家伙,又被你装到了呀!!!

image.png

最后,咱们就对nacos的源码,编译一下喽!!!

命令执行如下:

mvn -Prelease-nacos -Dmaven.test.skip=true -Dcheckstyle.skip=true clean install -U

idea执行如下:

image.png

image.png

执行成功后,可以在distribution目录下面,找到编译好的nacos服务,可以直接使用了!!!

image.png

到此,nacos适配oracle数据库,就完事了呀!!!

最后,咱们讨论一个问题:

image.png

从上图,可以看到,这个版本,支持的oracle12c

哈哈,我猜你会说:哥们呀,大部分用的是oracle11g呀,你这也不合适呀!!!

行行行,oracle11g的适配,哥们下次再和你说吧,哈哈!!!

image.png