解决的问题
1、单一数据库无法满足性能需求
读写分离、垂直分表、水平分表、分布式事务
2、系统容灾
3、运维管理
原理
整体结构
执行原理
执行流程
核心组件
Matrix层
1、解决分库分表带来的问题,影响数据访问的路由;
2、解决事务问题
- 固定哈希算法
- 一致性哈希算法
- 自定义路由:
- 如userId%表大小
Group 层
作用:
读写分离
主备切换
权重选择
数据保护:数据库连接down后,保护程序不会因为数据库挂掉而整体卡死
Atom层
基于Druid连接池
作用:
动态创建、添加、减少数据源
对数据库做了代理,对单库的jdbc进行了封装
统计计数
Sequence
单数据源
使用DefaultSequenceDao
多数据源
使用使用GroupSequenceDao
多个实例的Sequence表
value步长 = innerStep * dscount
关键参数:
dscount:数据源的个数,值需要大于等于实际的数据源个数
可以大于数据源:为以后增加数据源预留空间、为单元化多数据源提供基础
dbGroupKeys:对应tddl中group name