分布式数据库中间件—TDDL
一. 概念
1.分层
- Matrix层
- 作用:实现分库分表逻辑
- 过程:
- Sql的解析
- 规则的匹配与计算
- 表名替换
- Sql转发:将上一步生成的各个sql语句转发到对应的Group进行执行
- Group层
- 作用:实现了数据库的Master/Salve模式的写分离逻辑
- 过程:
- 根据权重选择AtomDs:在主节点和副节点读数据,只在主节点写数据
- 具有重试的策略地在AtomDs上执行SQL
- Atom层
- 作用:实现数据库
ip
,port
,password
,connectionProperties
等信息的动态推送,以及持有原子的数据源分离的JBOSS数据源)。 - 过程:
- 读写数控制,线程并发数控制
- 执行sql返回结果集(返回给Matrix)
- 作用:实现数据库
2.图示
-
执行流程
-
工作流程
二. 使用
- 添加依赖
<dependency>
<groupId>com.taobao.tddl</groupId>
<artifactId>tddl-interact</artifactId>
<version>3.0.1.5.taobaocode-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.taobao.tddl</groupId>
<artifactId>tddl-group-datasource</artifactId>
<version>3.0.1.5.taobaocode-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.taobao.diamond</groupId>
<artifactId>diamond-utils</artifactId>
<version>2.0.5.3.taocode-SNAPSHOT</version>
</dependency>
- 在spring配置文件中配置tddl数据源
<bean id="dataSource" class="com.taobao.tddl.jdbc.group.TGroupDataSource" init-method="init">
<property name="appName" value="tddl_sztce"></property>
<property name="dbGroupKey" value="group_sample"></property>
</bean>
- 将数据源配置到jdbc、ibatis等Template中了
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg>
<ref bean="dataSource" />
</constructor-arg>
</bean>
<!-- mybatis -->
<bean id="log4jHolder" class="com.xxx.xxx.mybatis.MyBatisLogHolder" lazy-init="false" init-method="useLog4JLogger"></bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:META-INF/db/myBatis-configuration.xml"></property>
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:com/xxx/xxxx/mappings/**/*Dao.xml" />
</bean>