[文檔] TDDL和Diamond的使用(一):基本介紹

 一,說明

  因項目需求要調研一下TDDL,在調研中發現相關的資料較少,所以記之。

  本文描述Diamond和TDDL中間件的部署和使用。

  Diamond是淘寶開源的配置管理系統(config server),以簡單可用的方式提供分佈式系統的配置管理功能。

  TDDL是淘寶開源的數據庫中間件,提供統一的中間層實現對下層數據庫的集羣管理,動態配置,讀寫分離等功能(數據同步需自行處理);當前開源版本不是內部使用完整版本,只有動態數據源功能而缺乏分庫分表層。

  TDDL依賴於Diamond進行配置管理。

  注意:因爲淘寶博客地址變遷,在上文兩個連接網頁中的文檔鏈接已不可用,新的地址遷移到了:

  Diamond相關:

  diamond專題第一期,主要介紹了diamond的概況和快速使用,

  文章連接:http://jm-blog.aliapp.com/?p=1588

  diamond專題第二期,主要介紹了diamond的核心原理,

  文章連接:http://jm-blog.aliapp.com/?p=1592

  diamond專題第三期,主要介紹了diamond的架構,

  文章連接:http://jm-blog.aliapp.com/?p=1606

  diamond專題第四期,主要介紹了diamond的容災機制,

  文章連接:http://jm-blog.aliapp.com/?p=1617

  TDDL相關:

  TDDL動態數據源基本說明:http://jm-blog.aliapp.com/?p=1642

  TDDL示例說明:http://jm-blog.aliapp.com/?p=1645

  二,系統環境和部署架構

  本文中的示例環境以下:php

OP Ubuntu 11.04 x86_64
Kernel 2.6.38-8-generic
Java OpenJDK 1.6.0_22

相關軟件以下:html

Maven Apache Maven 2.2.1
Mysql mysql  Ver 14.14 Distrib 5.1.62 (oracle亦可)
Tomcat 7.0.19 (能部署war包的web容器亦可)
Diamond Svn R16
TDDL Svn R14


  Diamond是一個統一的配置管理服務,各個系統服務的配置能夠發佈到Diamond-server上;而後客戶端能夠根據約定的ID來訂閱和獲取這些服務的配置。當須要改變配置時,只須要修改Diamond-server中的數據,各個客戶端會自動獲取到新的配置。這個相似於zookeeper的配置管理,只不過Diamond-client是輪詢來獲取數據而不是經過watch推送。

  具體來講,Diamond的使用須要以下幾個組件:

  1) 數據庫:用於存放配置數據

  2) Diamond Server:配置管理組件,能夠增刪改查服務配置,並提供接口供client端訪問。

  3) Http server:一個簡單的Diamond server地址展現頁面;客戶端經過http server獲取Diamond Server的實際地址。

  4) Diamond Client:客戶端,先訪問Http Server得到Diamond Server的所在,再訪問Diamond Server獲取配置數據。

  具體以下圖所示:

  TDDL是一個數據庫中間件,它集成了數據庫的集羣管理,主備切換,讀寫分離等功能,可以大大減小應用層面對數據庫集羣操做的複雜度。整個TDDL產品包括對應用透明的分庫分表層,以及具備衆多特性的動態數據源。但惋惜的是,如今還只開源了動態數據源的部分。這部分基本用在集羣管理上,好比主備切換,讀寫權重設置,數據庫配置動態變動等。

  TDDL動態數據源主要分爲兩層,每一層都實現了JDBC規範,總體結構以下圖所示:

  其中的tdds atom datasource(TAtomDataSource)和tddl gourp datasource(TGroupDataSource)分別從單個數據庫節點和集羣數據庫兩個層面對下層的數據庫進行管理。

  TAtomDataSource抽取了Jboss中的datasource組件,對應單個的數據源,實現數據庫配置管理和訪問的封裝。TGroupDataSource對應多個數據庫節點組成的集羣,內含多個TAtomDataSource,實現數據庫集羣配置管理,容災切換和訪問的封裝。在實際使用時,全部數據源和集羣的配置信息都放在Diamond上,程序中的TDDL首先從Diamond獲取數據,而後根據配置策略直連數據庫,訪問方式如圖所示:

  雖然Diamond和TDDL都開源了,可是代碼,配置說明和使用文檔還不夠完善,在使用時直接遵循開源文檔中的描述通常都會出現問題。下文參照文檔和網絡資料對這兩個組件的安裝和使用進行說明。


   擴展閱讀:

  TDDL和Diamond的使用(一):基本介紹: http://udn.yyuap.com/thread-38155-1-1.html

  TDDL和Diamond的使用(二):Diamond: http://udn.yyuap.com/thread-38157-1-1.html

  TDDL和Diamond的使用(三):TDDL: http://udn.yyuap.com/thread-38159-1-1.html