Zdal分库分表、超详细一步一步实现使用zdal搭建框架

 

https://blog.csdn.net/q6834850/article/details/75574890 


转载请标明出处,谢谢~!^^,有问题一起讨论 _______by-陶浩伟

背景:

我在的开发小组比较空闲,在看完业务逻辑后,暂时没什么任务的我研究起了小组项目的搭建。

小组项目是一个分布式项目,逻辑比较简单,但是用到的技术比较全面。分别用到 dubbo分布式服务框架、MQ消息队列、redis、Zdal分库分表、Mybatis、spring等

技术在业务逻辑上的体现大致为:

正文
1、什么是zdal? 它能解决什么问题? 
2、zdal的组成 
3、搭建的项目展示 
4、zdal搭建所需环境 
5、zdal配置文件的配置 
6、编写测试类,测试项目搭建 
7、异常处理建议

1、什么是zdal? 它能解决什么问题?
注:本文参照了些该文(同后)的内容,加上自己的理解,侧重实际搭建,内容有表述不清楚的地方,请参照文档理解–作者:黄磊,若有错误知错,请大家指出^^。

1.1 什么是zdal?

       Zdal是支付宝自主研发的数据中间件产品,采用标准的JDBC规范,可以在分布式环境下看上去像传统数据库一样提供海量数据服务,是一种通用的分库分表数据库访问框架。

1.2 它能解决什么问题?

       它能在数据访问压力过大时,解决单库单表数据库访问压力,Zdal主要提供分库分表,分散压力,结果集合并,sql解析,数据库failover动态切换等功能,提供互联网金融行业的数据访问层统一解决方案,

1.3 实际运用

       目前已经在支付宝的交易,支付,会员,金融等大部分关键应用上使用,并且在2013年双11大促中运行稳定。

2、zdal的组成、zdal是怎么实现的?
2.1 zdal组件主要有5部分组成:

Zdal-client:开发编程接口,实现jdbc的Datasource,Connection,Statement,PreparedStatement,ResultSet等接口,实现通用的jdbc-sql访问,内部还实现读库重试,group数据源的选择器,表名替换,sql执行器等功能。
Zdal-parser:支持oracle/mysql/db2等数据库的sql语句解析,并且缓存。根据规则引擎提供的参数列表,在指定的sql中查找到需要的参数,然后返回拆分字段。
Zdal-rule:根据zdal-parser解析后的拆分字段值来确定逻辑库和物理表名。
Zdal-datasource:数据库连接的管理,支持mysql,oracle,db2数据库的连接管理。
Zdal-common:zdal组件所使用的一些公共组件类
2.3 zdal是怎么实现的呢?

a、不同于以往的jdbc连接,zdal实现同时与多个数据源绑定 
b、根据规则引擎生成的目标库id和表名,根据其中的某个字段计算该数据属于的物理数据库 
c、然后动态指定读库,对该库进行操作

3、搭建的项目展示
3.1 项目介绍

     项目一共使用两个数据库服务器,分别是本机和远程的数据库服务器,共分了4个数据库DB,平均分布共12张城市信息表,每个数据库中3张城市信息表,城市信息表中只有两个字段,分别是id和cityName.

    数据库DB命名规则为test_XX(索引),城市信息表命名规则为t_city_XX(索引)

3.2 数据库目录结构、以及表展示

//表的创建sql语句
CREATE TABLE test_00.t_city_00 (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `cityName` varchar(32) NOT NULL COMMENT '城市名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;`
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值