新版本springboot-整合多数据源拆分思路
生活随笔
收集整理的這篇文章主要介紹了
新版本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個方法都要加這個指向,所以我還是覺得分包會好一點
?
總結
以上是生活随笔為你收集整理的新版本springboot-整合多数据源拆分思路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新版本springboot整合@tran
- 下一篇: 事务与分布式事务原理与实现