分布式数据层 TDDL

GPL
Java
跨平台
阿里巴巴
2014-02-24
滔哥

注意:tddl2.0是2010年的版本,已经没有人维护了。当前版本是5.1.7,网上能够找到的最新版本。项目地址为:https://www.oschina.net/p/tddl5

淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ©_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。

TDDL所处的位置(tddl通用数据访问层,部署在客户端的jar包,用于将用户的SQL路由到指定的数据库中):

淘宝很早就对数据进行过分库的处理, 上层系统连接多个数据库,中间有一个叫做DBRoute的路由来对数据进行统一访问。DBRoute对数据进行多库的操作、数据的整合,让上层系统像操作 一个数据库一样操作多个库。但是随着数据量的增长,对于库表的分法有了更高的要求,例如,你的商品数据到了百亿级别的时候,任何一个库都无法存放了,于是 分成2个、4个、8个、16个、32个……直到1024个、2048个。好,分成这么多,数据能够存放了,那怎么查询它?这时候,数据查询的中间件就要能 够承担这个重任了,它对上层来说,必须像查询一个数据库一样来查询数据,还要像查询一个数据库一样快(每条查询在几毫秒内完成),TDDL就承担了这样一 个工作。在外面有些系统也用DAL(数据访问层) 这个概念来命名这个中间件。
下图展示了一个简单的分库分表数据查询策略:

主要优点:
1.数据库主备和动态切换
2.带权重的读写分离
3.单线程读重试
4.集中式数据源信息管理和动态变更
5.剥离的稳定jboss数据源
6.支持mysql和oracle数据库
7.基于jdbc规范,很容易扩展支持实现jdbc规范的数据源
8.无server,client-jar形式存在,应用直连数据库
9.读写次数,并发度流程控制,动态变更
10.可分析的日志打印,日志流控,动态变更
TDDL必须要依赖diamond配置中心(diamond是淘宝内部使用的一个管理持久配置的系统,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管理,同时diamond也已开源)。
TDDL动态数据源使用示例说明:http://rdc.taobao.com/team/jm/archives/1645
diamond简介和快速使用:http://jm.taobao.org/tag/diamond%E4%B8%93%E9%A2%98/
TDDL源码:https://github.com/alibaba/tb_tddl
TDDL复杂度相对较高。当前公布的文档较少,只开源动态数据源,分表分库部分还未开源,还需要依赖diamond,不推荐使用。

加载中

评论(5)

相信你自己
相信你自己
https://www.oschina.net/p/tddl 更新了
芋道源码
芋道源码
推荐下同类型分表分库数据库中间件 Sharding-JDBC,支持 MySQL Oracle SQLServer PostgreSQL 很靠谱的数据库中间件。代码结构有层次,编码规范。 有兴趣了解,可以看我博客:http://www.yunai.me/categories/Sharding-JDBC/?oschina&41
小99
小99
还是用乐视的jfaster mango吧
雪狼湖1
国产开源就是坑
哈哈爱兮爱兮乎乎
哈哈爱兮爱兮乎乎
几年都没有更新了。 #TDDL#

暂无资讯

1
回答
tddl 自身集成druid,但发现会报:DruidDataSource: skip not validate connection.导致超时(报此原因应该是mysql物理连接已经中断)

@wenshao 你好,想跟你请教个问题: tddl 自身集成druid,但发现会报:DruidDataSource: skip not validate...

2016/10/02 14:38
1
回答
tddl使用异常,报"Cause: java.sql.SQLException: the defaultDispatcher have no dbIndexMap and defaultDbIndex"错误

@齐百超 你好,我想请教个问题,我现在用的tddl是3.3.3.1版本,向数据库插入数据的时候会出现如下错误提示: org.springframework...

2016/07/29 11:20
2
回答
找一个 可用的tddl + diamond 的版本

找一个 可用的tddl + diamond 的版本 请 大神帮帮忙 项目急用 必须是自己亲自使用过的 谢谢

2015/09/26 17:17
3
回答
mysql读写分离方案比较

最近有个springmvc+ibatis项目需要做mysql读写分离,目前查询到以下几个方案 1.应用层. 通过spring管理datasource的ro...

2014/07/15 10:39

没有更多内容

加载失败,请刷新页面

没有更多内容

Mycat架构分析

比较了业界流行的MySQL分布式数据库中间件,关于每个产品的介绍,网上的资料比较多,本文只是对几款产品的架构进行比较,从中可以看出中间件发展和演进路线

2016/06/30 20:40
112
0
剖析淘宝 TDDL

前言 在开始讲解淘宝的 TDDL(Taobao Distribute Data Layer) 技术之前,请允许笔者先吐槽一番。首先要开喷的是淘宝的社区支持做的无比的烂, TaoCode 开源社区上面,几乎从来都是有人提问,无...

2014/09/12 17:47
372
1
tddl的使用

在使用tddl 之前首选安装 配置diamond 基本信息说明 appName=pay groupKey=groupKey dbKey=andor_qatest 备注 dbkey 为数据库名称 dbType=mysql dbUserName=tddl 一 .动态数据源配置 TGroup...

2015/05/26 14:32
1K
1
TDDL

TDDL的由来 TDDL的功能

2015/08/13 14:14
131
0
开源个人参考淘宝TDDL写的一个分库分表Sharding中间件Kamike.divide

现在过年在家里打扫卫生,顺便清理重构下代码,开源个人参考淘宝的TDDL分库分表Sharding思路写的一个分库分表中间件Kamike.divide.

2014/01/26 14:15
3.5K
0
Mysql中间件研究(Atlas,cobar,TDDL)

mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,t...

2014/06/17 15:47
1K
0
mysql中间件研究(Atlas,cobar,TDDL)

mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,t...

2015/03/03 14:38
362
0
mysql中间件研究(Atlas,cobar,TDDL)【转】

mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,t...

2015/08/26 10:20
207
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部