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