分布式数据库中间件—TDDL

分布式数据库中间件—TDDL

一. 概念

1.分层

  1. Matrix层
    1. 作用:实现分库分表逻辑
    2. 过程:
      1. Sql的解析
      2. 规则的匹配与计算
      3. 表名替换
      4. Sql转发:将上一步生成的各个sql语句转发到对应的Group进行执行
  2. Group层
    1. 作用:实现了数据库的Master/Salve模式的写分离逻辑
    2. 过程:
      1. 根据权重选择AtomDs:在主节点和副节点读数据,只在主节点写数据
      2. 具有重试的策略地在AtomDs上执行SQL
  3. Atom层
    1. 作用:实现数据库ip,port , password , connectionProperties 等信息的动态推送,以及持有原子的数据源分离的JBOSS数据源)。
    2. 过程:
      1. 读写数控制,线程并发数控制
      2. 执行sql返回结果集(返回给Matrix)

2.图示

  1. 执行流程
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8iMwXZcY-1574921477381)(en-resource://database/6115:1)]

  2. 工作流程
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8MPKmGiN-1574921477382)(en-resource://database/6113:1)]

二. 使用

  1. 添加依赖
<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>
  1. 在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> 
  1. 将数据源配置到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>
发布了96 篇原创文章 · 获赞 26 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq919694688/article/details/103292609