diamond專題(一)– 簡介和快速使用

大家好,今天開始爲大家帶來我們通用產品團隊的產品 —— diamond的專題,本次爲大家介紹diamond的概況和快速使用。

一、概況

diamond是淘寶內部使用的一個管理持久配置的系統,它的特點是簡單、可靠、易用,目前淘寶內部絕大多數系統的配置,由diamond來進行統一管理。

diamond爲應用系統提供了獲取配置的服務,應用不僅可以在啓動時從diamond獲取相關的配置,而且可以在運行中對配置數據的變化進行感知並獲取變化後的配置數據。

持久配置是指配置數據會持久化到磁盤和數據庫中。

diamond的特點是簡單、可靠、易用:

簡單:整體結構非常簡單,從而減少了出錯的可能性。

可靠:應用方在任何情況下都可以啓動,在承載淘寶核心系統並正常運行一年多以來,沒有出現過任何重大故障。

易用:客戶端使用只需要兩行代碼,暴露的接口都非常簡單,易於理解。

二、快速使用

1、源代碼檢出

從以下svn地址檢出diamond的源代碼:

http://code.taobao.org/svn/diamond/trunk

2、server的搭建

(1)mysql

安裝mysql-server的步驟請參考mysql官方文檔,安裝完畢後,以root用戶登錄,建立用戶並賦予權限,建立數據庫,然後建表,語句分別如下:

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’)

);

完成後,請將數據庫的配置信息(IP,用戶名,密碼)添加到diamond-server工程的src/resources/jdbc.properties文件中的db.url,db.user,db.password屬性上面,這裏建立的庫名,用戶名和密碼,必須和jdbc.properties中對應的屬性相同。

(2)tomcat

tomcat是diamond server的運行容器。

tomcat的安裝請參考tomcat官方文檔,建議使用tomcat7

不需要對tomcat進行任何改動。

(3)diamond server

在diamond-server源代碼根目錄下,執行mvn clean package -Dmaven.test.skip,成功後會在diamond-server/target目錄下生成diamond-server.war(如果沒有安裝maven,請參考maven官方文檔進行安裝)。

打包完成後,將diamond-server.war放在tomcat的webapps目錄下。

啓動tomcat,即啓動了diamond-server

(4)http server

http server用來存放diamond server等地址列表,可以選用任何http server,這裏以tomcat爲例。

一般來講,http server和diamond server是部署在不同機器上的,這裏簡單起見,將二者部署在同一個機器下的同一個tomcat的同一個應用中,注意,如果部署在不同的tomcat中,端口號一定是8080,不能修改(所以必須部署在不同的機器上)。

在(3)的tomcat的webapps中的diamond-server中建立文件diamond,文件內容是diamond-server的地址列表,一行一個地址,地址爲IP,例如:

127.0.0.1

完成以上4步後,server端的搭建就完成了。

2、發佈數據

diamond發佈數據通過手工的方式進行。

在瀏覽器中輸入http://ip:8080/diamond-server/,ip爲server搭建的第(2)步中的地址,以user爲用戶名,123爲密碼,登錄後進入後臺管理界面,然後點擊“配置信息管理”—— “添加配置信息”,在輸入框中輸入dataId、group、內容,最後點擊“提交”即可。

成功後,可以在“配置信息管理”中查詢到發佈的數據。

3、訂閱數據

diamond客戶端API主要提供了訂閱數據的功能.

(1)客戶端獲取服務端地址

獲取服務端地址對客戶端是透明的,客戶端僅僅需要在本地進行如下域名綁定即可:

ip    a.b.c

ip爲前面搭建的http-server的ip

(2)創建訂閱者

DiamondManager manager = new DefaultDiamondManager(group, dataId, new ManagerListener() {

public Executor getExecutor() {

return null;

}

public void receiveConfigInfo(String configInfo) {

// 客戶端處理數據的邏輯

}

});

參數的說明:

group和dataId爲String類型,二者結合爲diamond-server端保存數據的惟一key

ManagerListener 是客戶端註冊的數據監聽器, 它的作用是在運行中接受變化的配置數據,然後回調receiveConfigInfo()方法,執行客戶端處理數據的邏輯。如果要在運行中對變化的配置數據進行處理,就一定要註冊ManagerListener

(3)獲取配置數據

String configInfo = manager.getAvailableConfigInfomation(timeout);

diamond-server端保存的配置全都爲文本類型,返回給客戶端的配置數據爲java.lang.String類型,timeout爲從網絡獲取配置數據的超時時間。客戶端調用每次調用該方法,都能夠保證獲取一份最新的可用的配置數據。

發佈了18 篇原創文章 · 獲贊 7 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章