SpringBoot+MyBatis+MySQL讀寫分離(實例)

1. 引言

讀寫分離要做的事情就是對于一條SQL該選擇哪個數(shù)據(jù)庫去執(zhí)行羊异,至于誰來做選擇數(shù)據(jù)庫這件事兒,無非兩個捉撮,要么中間件幫我們做怕品,要么程序自己做。因此巾遭,一般來講肉康,讀寫分離有兩種實現(xiàn)方式。第一種是依靠中間件(比如:MyCat)灼舍,也就是說應(yīng)用程序連接到中間件吼和,中間件幫我們做SQL分離;第二種是應(yīng)用程序自己去做分離片仿。這里我們選擇程序自己來做纹安,主要是利用Spring提供的路由數(shù)據(jù)源,以及AOP

然而厢岂,應(yīng)用程序?qū)用嫒プ鲎x寫分離最大的弱點(不足之處)在于無法動態(tài)增加數(shù)據(jù)庫節(jié)點光督,因為數(shù)據(jù)源配置都是寫在配置中的,新增數(shù)據(jù)庫意味著新加一個數(shù)據(jù)源塔粒,必然改配置结借,并重啟應(yīng)用。當(dāng)然卒茬,好處就是相對簡單船老。

2. AbstractRoutingDataSource

基于特定的查找key路由到特定的數(shù)據(jù)源。它內(nèi)部維護(hù)了一組目標(biāo)數(shù)據(jù)源圃酵,并且做了路由key與目標(biāo)數(shù)據(jù)源之間的映射柳畔,提供基于key查找數(shù)據(jù)源的方法。

3. 實踐

關(guān)于配置請參考:

https://www.cnblogs.com/cjsblog/p/9706370.html

3.1. maven依賴


這里郭赐,我們配置了4個數(shù)據(jù)源薪韩,1個master,2兩個slave捌锭,1個路由數(shù)據(jù)源俘陷。前3個數(shù)據(jù)源都是為了生成第4個數(shù)據(jù)源,而且后續(xù)我們只用這最后一個路由數(shù)據(jù)源观谦。

MyBatis配置


由于Spring容器中現(xiàn)在有4個數(shù)據(jù)源拉盾,所以我們需要為事務(wù)管理器和MyBatis手動指定一個明確的數(shù)據(jù)源。

3.3. 設(shè)置路由key / 查找數(shù)據(jù)源

目標(biāo)數(shù)據(jù)源就是那前3個這個我們是知道的豁状,但是使用的時候是如果查找數(shù)據(jù)源的呢捉偏?

首先,我們定義一個枚舉來代表這三個數(shù)據(jù)源

packagecom.cjs.example.enums;

publicenumDBTypeEnum?{

MASTER,?SLAVE1,?SLAVE2;

}

接下來替蔬,通過ThreadLocal將數(shù)據(jù)源設(shè)置到每個線程上下文中


例如告私,假設(shè)我們有一張表member


4. 測試


查看控制臺

5. 工程結(jié)構(gòu)

擴(kuò)展閱讀

Springboot + Mybatis,數(shù)據(jù)庫多數(shù)據(jù)源配置項目Demo【源碼下載】

Spring+MyBatis多數(shù)據(jù)源配置實現(xiàn)(實操型)

SpringBoot?(?七?)?:springboot?+?mybatis?多數(shù)據(jù)源最簡解決方案

某小公司 RESTful承桥、共用接口驻粟、前后端分離、接口約定的實踐

MySQL 主從復(fù)制與讀寫分離概念及架構(gòu)分析

讀寫一致性的一些思考

來源:http://www.cnblogs.com/cjsblog/p/9712457.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凶异,一起剝皮案震驚了整個濱河市蜀撑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剩彬,老刑警劉巖酷麦,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異喉恋,居然都是意外死亡沃饶,警方通過查閱死者的電腦和手機(jī)母廷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糊肤,“玉大人琴昆,你說我怎么就攤上這事」萑啵” “怎么了业舍?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長升酣。 經(jīng)常有香客問我舷暮,道長,這世上最難降的妖魔是什么噩茄? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任下面,我火速辦了婚禮,結(jié)果婚禮上巢墅,老公的妹妹穿的比我還像新娘诸狭。我一直安慰自己,他們只是感情好君纫,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芹彬,像睡著了一般蓄髓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舒帮,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天会喝,我揣著相機(jī)與錄音,去河邊找鬼玩郊。 笑死肢执,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的译红。 我是一名探鬼主播预茄,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼侦厚!你這毒婦竟也來了耻陕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤刨沦,失蹤者是張志新(化名)和其女友劉穎诗宣,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體想诅,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡召庞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年岛心,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篮灼。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡忘古,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出穿稳,到底是詐尸還是另有隱情存皂,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布逢艘,位于F島的核電站旦袋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏它改。R本人自食惡果不足惜疤孕,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望央拖。 院中可真熱鬧祭阀,春花似錦、人聲如沸鲜戒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遏餐。三九已至伦腐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間失都,已是汗流浹背柏蘑。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留粹庞,地道東北人咳焚。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像庞溜,于是被迫代替她去往敵國和親革半。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

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

  • 1. 簡介 1.1 什么是 MyBatis 强缘? MyBatis 是支持定制化 SQL督惰、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,523評論 0 4
  • 讀寫分離一直都是項目的標(biāo)配,之前項目的做法非常簡單旅掂,直接配置兩個數(shù)據(jù)源赏胚,一個只讀,一個只寫商虐,只讀的放到xxx.re...
    我來試試168168閱讀 1,708評論 0 1
  • 罄竹發(fā)信息給樂茶觉阅。 “他要離婚崖疤,他老婆要他凈身出戸,二個孩子不給他典勇,你怎么看劫哼?” “我覺得,他老婆對他有愛割笙!” “...
    無來有閱讀 423評論 0 0
  • 2018.11.23日 周五 玉潔堅持分享第153天 買好了一家人的早餐权烧,匆忙地趕到家!媽媽正在忙著做飯伤溉,老爹聽到...
    快樂舒馨閱讀 206評論 0 0