044-多數(shù)據(jù)源&讀寫分離

在實際開發(fā)中秘遏,我們一個項目可能會用到多個數(shù)據(jù)庫邦危,通常一個數(shù)據(jù)庫對應(yīng)一個數(shù)據(jù)源倦蚪。在springboot中配置多個數(shù)據(jù)源陵且,推薦dynamic-datasource-spring-boot-starter依賴組件慕购,它適用于讀寫分離沪悲,一主多從的環(huán)境殿如。如果是更復(fù)雜的多數(shù)據(jù)源環(huán)境涉馁,建議使用sharding-jdbc?烤送。

首先介紹pom依賴:

可以看到帮坚,除了原來的ssm配置叶沛,只增加了一個dynamic-datasource-spring-boot-starter依賴灰署。



然后介紹項目配置溉箕,配置過程分為以下五步:

1 禁止默認的druid數(shù)據(jù)源配置

2 在配置文件中配置多個數(shù)據(jù)源

3 寫業(yè)務(wù)代碼肴茄。

4 測試

5 查看druid監(jiān)控工具


第一步

springboot有很多默認的自動化配置寡痰,數(shù)據(jù)源就是其中一個拦坠。要配置多數(shù)據(jù)源需要把默認的單數(shù)據(jù)源配置禁止掉springboot自帶的DataSourceAutoConfiguration入热。加入druid依賴后勺良,使用的是DruidDataSourceAutoConfigure尚困,因為它會默認會讀取application.properties文件的spring.datasource.*屬性并自動配置單數(shù)據(jù)源尾组。

需要在啟動類上加個注解就可以禁止掉:

@SpringBootApplication(exclude= {DruidDataSourceAutoConfigure.class})

第二步

在配置文件中配置多個數(shù)據(jù)庫的數(shù)據(jù)源讳侨,此處簡單配置一主三從四個數(shù)據(jù)庫的數(shù)據(jù)源跨跨。

第三步

開始寫業(yè)務(wù)代碼勇婴,首先在啟動類配置mapper接口的掃描:

@MapperScan("many.datasource.mp.mapper")

然后是實體類:

mapper接口:

service類:

注意,@DS("slave")注解放在類上面础米,說明整個類的方法默認使用三個從庫數(shù)據(jù)源操作數(shù)據(jù)庫屁桑,第一個insertUser方法在方法上面加了@DS("master")注解蘑斧,表示此方法使用主庫數(shù)據(jù)源竖瘾,凡是在方法上注明的會覆蓋默認的准浴,第四個方法selectUser3上面并沒有注明,會隨機使用三個從庫中的默認一個今野。

注意条霜,@DS注解建議使用在service層宰睡,不建議使用在mapper層拆内!

接下來是controller類:

可以看到控制器并沒有什么特別之處。只是單純的調(diào)用。




第四步

接下來進行測試抹沪,首先啟動項目刻肄,可以看到數(shù)據(jù)源加載:

打開postman,測試幾個接口融欧,首先測試新增:

控制臺:

數(shù)據(jù)庫:

接下來在三個從庫分別加入一條數(shù)據(jù):

執(zhí)行selectUser3接口會發(fā)現(xiàn)查詢結(jié)果會在三個從庫之間輪訓(xùn)敏弃,這也是實現(xiàn)了負載均衡。




第五步

查看druid監(jiān)控工具




上面就是springboot整合多數(shù)據(jù)源的一個簡單版本麦到。




讀寫分離

上面的例子中,每個對數(shù)據(jù)庫的操作方法可以任意選擇數(shù)據(jù)源逝薪,下面看一個實現(xiàn)讀寫分離的例子隅要,首先創(chuàng)建項目:

上面的依賴中,前面都是熟悉的董济,項目使用mybatisplus和sharding-jdbc-core這兩個第三方starter實現(xiàn)讀寫分離步清,關(guān)于mybatis plus,可以查看本系列教程的第045篇虏肾。

接下來看配置廓啊,

上面簡單配置了一主二從三個數(shù)據(jù)源,其中?round_robin 表示負載均衡使用循環(huán)的策略封豪。

接下來看一下啟動類:

啟動類要取消默認數(shù)據(jù)源的配置谴轮,并加上mapper的掃描注解。其它基本沒變吹埠。

這樣配置就基本完成了第步,使用starter就是這么簡單,接下來看業(yè)務(wù)代碼缘琅,首先是實體類:

然后是mapper:

mapper實現(xiàn)了一個新增和查詢功能粘都,測試讀寫分離足夠了。接下來看service代碼:

可以看到讀寫分離的service與上面多數(shù)據(jù)源的不同刷袍,這只是個普通的service翩隧,沒有多余的配置和注解,這是因為讀和寫的操作已經(jīng)自動實現(xiàn)了呻纹,只往主庫寫堆生,在讀庫讀。

最后看一下controller類:

可以看到也沒有什么不同雷酪。

接下來啟動項目測試:

可以看到只往主庫中寫數(shù)據(jù)了淑仆,從庫中并沒有。

注意:客戶端實現(xiàn)的讀寫分離太闺,都沒有實現(xiàn)主從同步糯景,需要配置數(shù)據(jù)庫本身的主從同步使用!!s盎础W钭 !


接下來往從庫中手動加一條數(shù)據(jù):

然后調(diào)用查詢接口:


自己手動多執(zhí)行幾次怠惶,可以發(fā)現(xiàn)實現(xiàn)了負載均衡涨缚,策略是輪訓(xùn)。



代碼地址:?https://gitee.com/blueses/spring-boot-demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末策治,一起剝皮案震驚了整個濱河市脓魏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌通惫,老刑警劉巖茂翔,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異履腋,居然都是意外死亡珊燎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門遵湖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悔政,“玉大人,你說我怎么就攤上這事延旧∧惫” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵迁沫,是天一觀的道長芦瘾。 經(jīng)常有香客問我,道長集畅,這世上最難降的妖魔是什么旅急? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮牡整,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溺拱。我一直安慰自己逃贝,他們只是感情好,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布迫摔。 她就那樣靜靜地躺著沐扳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪句占。 梳的紋絲不亂的頭發(fā)上沪摄,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音,去河邊找鬼杨拐。 笑死祈餐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的哄陶。 我是一名探鬼主播帆阳,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屋吨!你這毒婦竟也來了蜒谤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤至扰,失蹤者是張志新(化名)和其女友劉穎鳍徽,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敢课,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡阶祭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了翎猛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胖翰。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖切厘,靈堂內(nèi)的尸體忽然破棺而出萨咳,到底是詐尸還是另有隱情,我是刑警寧澤疫稿,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布培他,位于F島的核電站,受9級特大地震影響遗座,放射性物質(zhì)發(fā)生泄漏舀凛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一途蒋、第九天 我趴在偏房一處隱蔽的房頂上張望猛遍。 院中可真熱鬧,春花似錦号坡、人聲如沸懊烤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腌紧。三九已至,卻和暖如春畜隶,著一層夾襖步出監(jiān)牢的瞬間壁肋,已是汗流浹背号胚。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浸遗,地道東北人猫胁。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像乙帮,于是被迫代替她去往敵國和親杜漠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容