Skip to content

Zebra总体设计

junior_xin edited this page Dec 5, 2018 · 5 revisions

1 背景知识

2 zebra客户端架构

在阅读过上述基础知识之后,下面来介绍zebra的客户端架构:

其中:

1、最上层的是ShardDataSource,用于进行分库分表。ShardDataSource包含了若干个GroupDataSource,每个连接的数据库集群相当于1个分片(Shard)。

2、中间一层是GroupDataSource,主要用于读写分离。下面通过一组SingleDataSource连接一个数据库服务组集群,分为一个主和若干个从。

3、最下一层是SingleDataSource,主要用于和mysql集群中的单个mysql实例直接建立连接。支持6种连接池:dbcp、dbcp2、druid、tomcat-jdbc、c3p0,hikaricp。用户无需直接使用SingleDataSource。

ShardDataSource、GroupDataSource都实现了JDBC协议的javax.sql.DataSource接口,因此你可以把二者都当做一个普通的数据库连接池来使用。所有读写分离、分库分表的底层实现逻辑,都对用户进行了屏蔽。