Zdal是支付宝自主研发的数据中间件产品,采用标准的JDBC规范,可以在分布式环境下看上去像传统数据库一样提供海量数据服务,是一种通用的分库分表数据库访问框架,解决单库单表数据库访问压力,Zdal主要提供分库分表,结果集合并,sql解析,数据库failover动态切换等功能,提供互联网金融行业的数据访问层统一解决方案,目前已经在支付宝的交易,支付,会员,金融等大部分关键应用上使用,并且在2019双11大促中运行稳定。
系统目标
1.数据访问路由,将针对数据的读写请求发送到最合适的地方。
2.数据存储的自由扩展,不再受限于单台机器的容量瓶颈和速度瓶颈,平滑迁移。
3.使用zdal组件进行数据库的拆分,搭建分布式环境下的海量数据访问平台。
4.实现mysql,oracle,DB2数据库访问能力。
系统架构和领域模型
系统整体架构
zdal组件主要有5部分组成:
1. Zdal-client:开发编程接口,实现jdbc的Datasource,Connection,Statement,PreparedStatement,ResultSet等接口,实现通用的jdbc-sql访问,内部还实现读库重试,group数据源的选择器,表名替换,sql执行器等功能。
2. Zdal-parser:支持oracle/mysql/db2等数据库的sql语句解析,并且缓存。根据规则引擎提供的参数列表,在指定的sql中查找到需要的参数,然后返回拆分字段。
3. Zdal-rule:根据zdal-parser解析后的拆分字段值来确定逻辑库和物理表名。
4. Zdal-datasource:数据库连接的管理,支持mysql,oracle,db2数据库的连接管理。
5. Zdal-common:zdal组件所使用的一些公共组件类。