一, Diamond編譯
Diamond的代碼庫地址爲:
http://code.taobao.org/svn/diamond/trunk;
當前版本是r20,可是與TDDL匹配的版本是r16,所以咱們在check時須要指定這個版本。
1) 獲取代碼:svn co
http://code.taobao.org/svn/diamond/trunk
-r r16
獲取的代碼中,有 diamond-client, diamond-server和diamond-utils三個目錄
2) 配置說明:
在trunk和子目錄下都有pom.xml文件,是maven編譯的設置;
在trunk/diamond-server/src/main/resources下幾個properties文件。其中jdbc.properties是數據庫配置,須要根據實際的數據庫參數先進行設置(也能夠在部署後修改);user.properties是登陸diamond server後臺所需的用戶名密碼;node.properties和system.properties是系統的配置。
3) 配置修改
a) pom.xml:刪除antx.properties段的配置
b) propertie諸文件能夠先不修改
4) 編譯代碼
編譯依賴於java和maven,須要預裝這兩個環境。
環境準備好後,在trunk根目錄下使用以下命令編譯:
mvn clean package -Dmaven.test.skip
編譯成功會生成若干個jar包和一個war包,其中diamond-server/target下的war包則是用來部署的server文件
[INFO] taobao diamond v2.0.5.3.taocode-SNAPSHOT ………….. SUCCESS [3.331s]
[INFO] diamond-utils v2.0.5.3.taocode-SNAPSHOT …………… SUCCESS [2.860s]
[INFO] diamond-client v2.0.5.3.taocode-SNAPSHOT ………….. SUCCESS [2.269s]
[INFO] diamond-server v2.0.5.3.taocode-SNAPSHOT ………….. SUCCESS [4.642s]
二,示例
編譯成功後,下面進行簡單的試用。
1) 下載tomcat 7並部署,使用默認端口8080(該端口已是diamond-utils中設置的默認訪問端口);
2) 安裝mysql數據庫,根據默認的trunk/diamond-server/src/main/resources/jdbc.properties執行以下數據庫語句;html
CREATE DATABASE diamond;
GRANT ALL ON diamond.* TO zh@'%' IDENTIFIED BY 'abc';
USE diamond;
CREATE TABLE `config_info` (
`id` BIGINT(64) UNSIGNED NOT NULL AUTO_INCREMENT,
`data_id` VARCHAR(255) NOT NULL DEFAULT ' ',
`group_id` VARCHAR(128) NOT NULL DEFAULT ' ',
`content` LONGTEXT NOT NULL,
`md5` VARCHAR(32) NOT NULL DEFAULT ' ',
`gmt_create` DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00',
`gmt_modified` DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_config_datagroup` (`data_id`,`group_id`)
) CHARSET=GBK
上表中代碼建立了diamond數據庫及config_info表,並賦予了zh/abc用戶權限。
3) 部署Diamond-server:將編譯好的diamond-server.war投放到tomcat的webapp目錄下,啓動tomcat,而後訪問http://[IP]:8080/diamond-server/ 能夠進入diamond管理頁面,訪問的用戶名和密碼爲webapps/diamond-server/WEB-INF/classes/user.properties中設置的用戶名密碼,若是出現問題,能夠查看webapps/diamond-server/WEB-INF/logs下的日誌查找緣由。
成功進入後的UI如圖所示:
其中配置信息管理用於增刪改查配置信息;分組管理會出錯(在r16版本中缺乏相應的邏輯處理);權限管理用於修改登陸用戶。
咱們在配置信息管理中增長一條測試信息:
dataId和Group如圖所示,content隨便寫
4) 部署http server。http server給用戶用來查找diamond-server,客戶端默認訪問網址
http://a.b.c:8080/diamond-server/url
來獲取數據。通常來說,http server和diamond server是部署在不一樣機器上的,這裏簡單起見,將兩者部署在同一個機器下的同一個tomcat的同一個應用中,注意,若是部署在不一樣的tomcat中,端口號必定是8080,不能修改(因此必須部署在不一樣的機器上)。
在步驟3中的diamond-server下創建url文件,並寫入diamond-server的IP地址:一行一個,如127.0.0.1
能夠嘗試訪問
http://a.b.c:8080/diamond-server/url
測試地址是否生效。
5) 客戶端測試
在客戶端測試機上配置域名: a.b.c指向http server所在地址;而後編寫代碼進行數據獲取:
- public class DClientTest {
- public static void main(String[] args) {
- // group和dataId爲String類型,兩者結合爲diamond-server端保存數據的唯一key
- String group = "DEFAULT_GROUP";
- String dataId = "test";
-
- // ManagerListener 是客戶端註冊的數據監聽器,能在運行中接受變化的配置數據,
- // 而後回調receiveConfigInfo()方法,執行客戶端處理數據的邏輯。
- // 若是要在運行中對變化的配置數據進行處理,就必定要註冊ManagerListener
- DiamondManager manager = new DefaultDiamondManager(group, dataId,
- new ManagerListener() {
- @Override
- public Executor getExecutor() {
- return null;
- }
- @Override
- public void receiveConfigInfo(String configInfo) {
- System.out.println("獲取配置信息:" + configInfo);
- }
- });
- // 通常的獲取信息方法
- String configInfo = manager.getAvailableConfigureInfomation(1000);
- System.out.println(configInfo);
- }
- }
複製代碼
執行程序則會獲取並輸出數據,若是在diamond-server中修改了測試數據,這段代碼會自動從新獲取新的數據。
編譯執行時須要導入:diamond-util*.jar,diamond-utils*.jar,commons-net*.jar,commons-httpclient*.jar等包。若是使用mvn編譯,在本地倉庫中這些包都能找到。
擴展閱讀:
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