新版本springboot-整合多数据源拆分思路

我们就来画这样一个图,然后来谈一下多数据源,多数据源你们有没有遇到过的,这是你们做架构师必备的知识,不是很难,

多数据源的一个应用场景,用的还真的比较广泛的,公司分为两个数据库,一个数据库是专门用来存储共同的数据库文件的,

一个数据库是做垂直业务的数据库,外层加了缓存的,不用担心性能问题,垂直拆分和水平拆分,水平分表,水平分库,你们可能

大型互联网公司的时候,垂直是根据业务划分具体的数据库,你就当成公司里有两套数据库就行了,在一个项目中有多个数据源,

你们知道一个项目中最多有多少个数据源吗,数据源就是JDBC连接,是不同库的JDBC连接,不是不同的JDBC,在一个JDBC中有多个

数据源,是不同库的JDBC,是连接不同库的JDBC,你们知道最多能有多少个数据源吗,其实是可以无限大,订单,商品,不同的库,

你们知道当时有多少个JDBC连接吗,最高峰的时候是24个,因为项目太大了,只要你内存足就行了,所以本身是无限大,但是具体多少,

根据你的内存,我是8G的开到24个数据源,就是连接了24个库,多数据源如何划分,比如你在一个项目当中,业务肯定是根据包来的,

所以在这边我做两种,根据分包来的,不同业务他的模块包肯定不同,那么分包是根据什么来的,是不是业务来的,分包名进行区分的,

这个你们肯定都没有用过的,根据注解方式的,使用注解方式划分多数据源,我先讲分包进行区分,那这两种哪种用的更多呢,他有

各自有点,一般来说分包是用的最多的,因为他不用频繁加注解,加注解太麻烦了,你还要加注解表示指向哪个数据源,所以说一下他的

原理是怎样的呢,比如

com.learn.test01

然后这里再建一个包

com.learn.test02

那么test01他指的是什么,相当于指向datasource01,我可以把它指向datasource01,如果是test02这个下面的,访问数据库的话,

他是不是指向datasource2,我觉得这种方式用的比较广泛,你们知道这种方式类似于什么,类似于多个不同的jar包,这种方式是

什么意思,我把这个包打成jar包,你们会发现,如果你用过开源框架的时候,开源框架里面也是连数据库的,它里面是通过jar包

使用的,也是通过包名进行区分,类似于不同的jar包,是不同的业务需求,多个不同的业务需求,存放到同一个项目中去,就是把不同

项目的业务模块,只是我们没有打包,打包其实分开的,不打包是在一起,在这个地方我们说一下注解的原理,注解方式用的不多,

假设我现在这service层,如果我有多个数据源的情况下,自己定义了一个注解,自己写个注解,假设这个注解是我自己写的,

@DataSource(ref="datasource1"),在里面指定一下,你要用哪个数据源,我想用datasource1,那么这个方法里面,就会直接

读的datasource1,如果你想改成datasource2的话,用datasource2这个数据源,这种注解方式,其实是什么呢,

是我们内部写的,并不是开源的,通过AOP拦截,我取出datasource2的情况下,我就给你获取到datasource2的连接,

但是这种用法不多,特麻烦,为什么特别麻烦呢,如果我有1000个方法,1000个方法都要加这个指向,所以我还是觉得分包会好一点

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值