- 最上层 ShardDataSource: 用于分库分表; 包含一个或多个 GroupDataSrouce
- GroupDataSource: 主要用于读写分离, 分库中的一个shard
- 最下层的 SingleDataSource: 主要用于和 mysql 单个实例的连接, 这边是真正和连接池 dbcp/druid/hikaricp 打交道的
ShardDataSource、GroupDataSource都实现了JDBC协议的javax.sql.DataSource接口,因此你可以把二者都当做一个普通的数据库连接池来使用。所有读写分离、分库分表的底层实现逻辑,都对用户进行了屏蔽。
完整目录:数据库中间件zebra源码分析