摘要: 原創(chuàng)出處:www.bysocket.com 泥瓦匠BYSocket 希望轉(zhuǎn)載,保留摘要,謝謝!

“清醒時(shí)做事,糊涂時(shí)跑步,大怒時(shí)睡覺(jué),獨(dú)處時(shí)思考”

本文提綱
一、多數(shù)據(jù)源的應(yīng)用場(chǎng)景
二、運(yùn)行 springboot-mybatis-mutil-datasource 工程案例
三、springboot-mybatis-mutil-datasource 工程代碼配置詳解

一、多數(shù)據(jù)源的應(yīng)用場(chǎng)景

目前,業(yè)界流行的數(shù)據(jù)操作框架是 Mybatis,那 Druid 是什么呢?
Druid 是 Java 的數(shù)據(jù)庫(kù)連接池組件。Druid 能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能。比如可以監(jiān)控 SQL ,在監(jiān)控業(yè)務(wù)可以查詢慢查詢 SQL 列表等。Druid 核心主要包括三部分:
1. DruidDriver 代理 Driver,能夠提供基于 Filter-Chain 模式的插件體系。
2. DruidDataSource 高效可管理的數(shù)據(jù)庫(kù)連接池
3. SQLParser

當(dāng)業(yè)務(wù)數(shù)據(jù)量達(dá)到了一定程度,DBA 需要合理配置數(shù)據(jù)庫(kù)資源。即配置主庫(kù)的機(jī)器高配置,把核心高頻的數(shù)據(jù)放在主庫(kù)上;把次要的數(shù)據(jù)放在從庫(kù),低配置。開(kāi)源節(jié)流嘛,就這個(gè)意思。把數(shù)據(jù)放在不同的數(shù)據(jù)庫(kù)里,就需要通過(guò)不同的數(shù)據(jù)源進(jìn)行操作數(shù)據(jù)。這里我們舉個(gè) springboot-mybatis-mutil-datasource 工程案例:
user 用戶表在主庫(kù) master 上,地址表 city 在從庫(kù) cluster 上。下面實(shí)現(xiàn)獲取 根據(jù)用戶名獲取用戶信息,包括從庫(kù)的地址信息 REST API,那么需要從主庫(kù)和從庫(kù)中分別獲取數(shù)據(jù),并在業(yè)務(wù)邏輯層組裝返回。邏輯如圖: