sharding-jdbc是一款发展很快的分库分表框架,能够替换tddl框架(分库分表matrix部分没开源)或者mycat中间件,出自当当的张亮大神,目前还在不停快速的发展中。git
源码能够从https://git.oschina.net/dangdangdotcom/sharding-jdbc下载,功能介绍以及模块设计文档参考官方文档:http://dangdangdotcom.github.io/sharding-jdbc/00-overview/github
源码分为api, config, jdbc, hint, routing, parser, rewrite, executor, merger, keygen, metrixs几个重点模块,下面介绍一下各个模块的主要功能:spring
1,api:给出编程方式配置数据源,分库分表规则,hint方式强制路由api,读写分离数据源;这些类也能够配置成spring bean。sql
2,config:分片属性配置编程
3,jdbc:主要是对jdbc标准接口进行封装(wrapper),包括connection, datasource, statement, preparedstatement,resultset。至关于替换标准的jdbc实现,在真实执行jdbc驱动接口前,作了分库分表的逻辑和读写分离的逻辑。api
4,hint:主要是一个线程局部变量保持用户指定的分片值。app
5,routing:动态路由的实现。包括hint路由和sql parser两种方式框架
6,parser:解析sql,提取路由,sql改写和结果归并所须要的信息(查询的字段,表,关联表,关联条件,查询条件,排序字段,分组字段,分页信息);分布式
7,rewrite:改写sql,在分库分表状况下,对表名修改,分页信息修改,增长衍生出来的查询字段(order by, group by 方便后面结果合并排序和统计的时候用).net
8,executor:执行sql,能够并行执行多个库的sql
9,merger:结果归并,order排序,group by的统计
10,keygen:分布式id生成器
11,metrixs:度量
下面对重点模块代码进行解读,主要是jdbc, routing, parser, rewrite, executor, merger这6个模块。