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;`

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

  1. Zdal分库分表中间件介绍

    本文来说下Zdal分库分表框架 文章目录 概述 概述

  2. 玩转MySQL:一站式解决分库分表后患问题方案

    引言 上篇有关分分库分表一文中已经将分库分表的方法论全面阐述清楚了,总体看下来用一个字形容,那就是爽!(手动狗头)尤其是分库分表技术能够让数据存储层真正成为三高架构,但前面爽是爽了,接着一起来看看分库 ...

  3. Mysql数据库数据拆分之分库分表总结

    Mysql数据库分库和分表方式,涉及到mysql数据库相关知识,对mysql数据库分库分表相关知识感兴趣的朋友一起学习吧 分库 场景: 分表能够解决单表数据量过大带来的查询效率下降的问题,但是,却无法 ...

  4. 超详细的mysql分库分表方案

    我们都知道,随着业务量的增长,数据量也会随之增加,这个时候就需要关注业务大表,因为大表会影响查询性能,DDL变更时间很长,影响业务的可用性,同时导致从库延迟很大,如果业务做了读写分离,导致用户重复操作 ...

  5. 支付宝分库分表中间件--zdal简介

    中间件, 如果仅仅作为一名用户的话, 主要关注一下如何使用即可, 大多数情况下也就是配置. 下面简单的介绍一下支付宝的分库分表中间件--->zdal在web项目中的配置. 1, 在网上查阅相关资 ...

  6. 数据库分库分表详细拆解

    一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用.接下来就 ...

  7. Mycat分库分表详细操作

    1.首先在Mycat官网下载安装包,这里就以最新的1.6版本为例,下载地址为:http://dl.mycat.io/1.6-RELEASE/ 2.解压完成后,主要编辑的配置文件在conf目录下,分别为 ...

  8. 高并发系列:存储优化之也许可能是史上最详尽的分库分表文章之一

    趣味性不强,但知识性很强,建议耐心看或者先收藏 本文内容预览: 库表会在哪天到达瓶颈? 1.1 苏宁拼购百万级库表拆分之前 1.2 京东配运平台库表拆分之前 1.3 大众点评订单库拆分之前 1.4 小 ...

  9. 百亿数据分库分表核心流程详解

    前言 俗话说:面试造火箭,入职拧螺丝.尽管99.99%的业务都不需要用到分库分表,但是分库分表还是频繁出现在大厂的面试中. 分库分表涉及到的内容非常多,有很多细节,如果在面试中被问到了,既是挑战,也是 ...

  10. 你分库分表的姿势对么?——详谈水平分库分表

    作者:vivo平台产品开发团队-Han Lei 一.背景 提起分库分表,对于大部分服务器开发来说,其实并不是一个新鲜的名词.随着业务的发展,我们表中的数据量会变的越来越大,字段也可能随着业务复杂度的升 ...

最新文章

  1. python爬虫提取教学_python爬虫的基本抓取
  2. 无线传输层安全协议WTLS安全机制详解
  3. 蒙特卡洛算法及其实现
  4. 如何找到在SAP社区上经过SAP官方认可比较有影响力的SAP从业者
  5. android 打开系统相册_这5款常用Android手机自动化测试工具你要收藏
  6. [六字真言]1.唵.遁入佛门之异常.md
  7. redis学习-列表(list)常用命令
  8. python复数类型转换_Python 复数数据类型详解(complex)[学习 Python 必备基础知识][看此一篇就够了]...
  9. web之webassembly安装
  10. IDEA+MAVEN+testNG(reportNG)
  11. 如何自己实现一个缓存服务
  12. 让模拟器也支持GPS定位(模拟实现)
  13. Flutter初步-第一个电视直播APP
  14. Android adb shell启动应用程序的方法
  15. 轻松办公信息化,六大OA产品优劣点评
  16. 在网易咔哒上面制作SCRATCH小程序
  17. Request和Response的概述及其方法
  18. Python精灵和精灵组
  19. WPF界面-手机QQ_DEMO
  20. 华南理工大学电气考研经验贴

热门文章

  1. psd文件用什么打开?如何修改psd文件?psd样式怎么修改文字?
  2. 如何卸载CrossOver里的软件 ?快来看看吧
  3. JAVA虚拟机——利用javap反编译class文件分析代码执行过程
  4. diff和pacth
  5. postgresql----时间类型
  6. APP,webapp 设计相关资料汇集区
  7. vtiger6.0升级汇总
  8. 解析函数论 Page 8 $f(x)$在$x_0$处解析的充要条件
  9. Linux 如何查看是否开启journal
  10. leetcode[35]搜索插入位置/Search Insert Position 暴力和二分法详解