zoukankan      html  css  js  c++  java
  • tddl源码随笔

    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;

        

  • 相关阅读:
    TCP的三次握手与四次挥手
    HashMap源代码分析(JDK1.8)
    HashMap实现原理分析(JDK1.8前)
    codebook法分割前景目标
    平均场景法分割前景目标
    边缘梯度方向直方图的构建
    学习opencv 第六章 习题十三
    《学习OpenCV》 第四章 习题六
    《学习Opencv》第五章 习题6
    Opencv实现的简易绘图工具
  • 原文地址:https://www.cnblogs.com/adealjason/p/6371060.html
Copyright © 2011-2022 走看看