tddl是阿里的分库分表中间件,系统架构上文描述的很清楚,本文主要整理下个人看tddl源码时认为有意义的东西

如上文所述,tddl分为三大主要模块,matrix、group、atom

1.atom模块

  atom模块是最底层的模块,主要实现tddl的动态数据源配置以及提供基于java.sql.DataSource的实现,但这两部分的事都不是它做的,atom仅是将动态配置以及数据源实现作一个聚合,Diamond提供基本的动态配置,基于注册监听机制实现数据源配置的动态刷新,atom内部定的接口如:DbConfManager,注册全局配置监听public void registerGlobaDbConfListener(ConfigDataListener Listener)和注册应用配置监听public void registerAppDbConfListener(ConfigDataListener Listener) 来监控dataId的变化

     数据源的提供,atom采用 原子的数据源分离的JBOSS数据源(直接将jboss的源码撸出来贴进去了),具体见类:WrapperDataSource

     atom定义了自己的基于java.sql.DataSource的数据源实现(AbstractTAtomDataSource),在java数据源接口的基础之上定义了自己的个方法,因为atom要实现动态数据源,所以必须要扩展java.sql.DataSource的接口才可以,主要定义了如下几个方法:

     //返回原子的jobss数据源实现

     protected abstract DataSource getDataSource() throws SQLException;
     //初始化方法,主要是解析diamond中的全局配置和app配置,拿到数据源配置信息等,具体的配置参见上文:tddl的原理分析
     public abstract void init() throws Exception;
     //刷新数据源
      public abstract void flushDataSource();
    //销毁数据源
      public abstract void destroyDataSource() throws Exception;