优先考虑分区。当分区不能满足需求时,开始考虑分表,合理的分表对效率的提升会优于分区。
分布式集群结构设计:
框架采用三层设计:最上层是Cluster,一个Cluster相当于我们常规的一个数据库;一个Cluster当中可以包含一到多个Partition,也就是分区;而一个Partition中可以包含一到多个Shard,也就是分片。
所以一个就形成了一个树状结构,通过Cluster->Partion->Shard就构成了整个数据库集群。但是对于开发人员来说,实际上并不知道这个内部结构,他只是连接上了一个JDBC数据源,然后做它应该做的事情就可以了。
Cluster
以完整的形态对外提供服务,它封装了Cluster当中所有Partition及其Shard的访问。把它打开是一个数据库集群,对于使用者来说是一个完整的数据库。
属性名 |
类型 |
说明 |
id |
String |
集群标识 |
userName |
String |
连接集群时的用户名 |
Password |
String |
连接集群时的密码 |
dataSources |
List<DataSourceConfig> |
集群中需要访问的数据源列表 |
partitions |
List<Partition>; |
集群中包含的分区列表 |
Partition
分区,分区有两种模式,一种是主从模式,用于做读写分离;另外一种模式是分片模式,也就是说把一个表中的数据分解到多个表中。一个分区只能是其中的一种模式。但是一个Cluster可以包含多个分区,不同的分区可以是不同的模式。
属性名 |
类型 |
说明 |
id |
String |
分区标识 |
mode |
int |
分区类型,可以是主从,也可以是分表 |
Password |
String |
连接集群时 |