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;

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM