
官方圖
- 最上層 ShardDataSource: 用于分庫(kù)分表; 包含一個(gè)或多個(gè) GroupDataSrouce
- GroupDataSource: 主要用于讀寫分離, 分庫(kù)中的一個(gè)shard
- 最下層的 SingleDataSource: 主要用于和 mysql 單個(gè)實(shí)例的連接, 這邊是真正和連接池 dbcp/druid/hikaricp 打交道的
ShardDataSource、GroupDataSource都實(shí)現(xiàn)了JDBC協(xié)議的javax.sql.DataSource接口,因此你可以把二者都當(dāng)做一個(gè)普通的數(shù)據(jù)庫(kù)連接池來(lái)使用。所有讀寫分離、分庫(kù)分表的底層實(shí)現(xiàn)邏輯,都對(duì)用戶進(jìn)行了屏蔽。