日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

淘宝JAVA中间件Diamond详解(一)---简介&快速使用

發(fā)布時(shí)間:2023/12/19 综合教程 45 生活家
生活随笔 收集整理的這篇文章主要介紹了 淘宝JAVA中间件Diamond详解(一)---简介&快速使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大家好,今天開始為大家?guī)?lái)我們通用產(chǎn)品團(tuán)隊(duì)的產(chǎn)品 —— diamond的專題,本次為大家介紹diamond的概況和快速使用。

一、概況

diamond是淘寶內(nèi)部使用的一個(gè)管理持久配置的系統(tǒng),它的特點(diǎn)是簡(jiǎn)單、可靠、易用,目前淘寶內(nèi)部絕大多數(shù)系統(tǒng)的配置,由diamond來(lái)進(jìn)行統(tǒng)一管理。

diamond為應(yīng)用系統(tǒng)提供了獲取配置的服務(wù),應(yīng)用不僅可以在啟動(dòng)時(shí)從diamond獲取相關(guān)的配置,而且可以在運(yùn)行中對(duì)配置數(shù)據(jù)的變化進(jìn)行感知并獲取變化后的配置數(shù)據(jù)。

持久配置是指配置數(shù)據(jù)會(huì)持久化到磁盤和數(shù)據(jù)庫(kù)中。

diamond的特點(diǎn)是簡(jiǎn)單、可靠、易用:

簡(jiǎn)單:整體結(jié)構(gòu)非常簡(jiǎn)單,從而減少了出錯(cuò)的可能性。

可靠:應(yīng)用方在任何情況下都可以啟動(dòng),在承載淘寶核心系統(tǒng)并正常運(yùn)行一年多以來(lái),沒(méi)有出現(xiàn)過(guò)任何重大故障。

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

二、快速使用

1、源代碼檢出

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

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

2、server的搭建

(1)mysql

安裝mysql-server的步驟請(qǐng)參考mysql官方文檔,安裝完畢后,建立數(shù)據(jù)庫(kù),然后建立兩張表,建表語(yǔ)句分別如下:

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 '',
`src_ip` varchar(20) default NULL,
`src_user` varchar(20) default NULL,
`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`)
);

create table group_info (
`id` bigint(64) unsigned NOT NULL auto_increment,
`address` varchar(70) NOT NULL default '',
`data_id` varchar(255) NOT NULL default '',
`group_id` varchar(128) NOT NULL default '',
`src_ip` varchar(20) default NULL,
`src_user` varchar(20) default NULL,
`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_group_address` (`address`,`data_id`,`group_id`)
);

建表完成后,請(qǐng)將數(shù)據(jù)庫(kù)的配置信息添加到diamond-server工程的src/resources/jdbc.properties文件中。

(2)tomcat

tomcat是diamondserver的運(yùn)行容器。

tomcat的安裝請(qǐng)參考tomcat官方文檔,建議使用tomcat7

不需要對(duì)tomcat進(jìn)行任何改動(dòng)。

(3)diamondserver

在diamond-server源代碼根目錄下,執(zhí)行mvncleanpackage-Dmaven.test.skip,成功后會(huì)在diamond-server/target目錄下生成diamond-server.war(如果沒(méi)有安裝maven,請(qǐng)參考maven官方文檔進(jìn)行安裝)。

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

啟動(dòng)tomcat,即啟動(dòng)了diamond-server

(4)httpserver

httpserver用來(lái)存放diamondserver等地址列表,可以選用任何httpserver,這里以tomcat為例。

一般來(lái)講,http server和diamond server是部署在不同機(jī)器上的,這里簡(jiǎn)單起見(jiàn),將二者部署在同一個(gè)機(jī)器下的同一個(gè)tomcat的同一個(gè)應(yīng)用中,注意,如果部署在不同的tomcat中,端口號(hào)一定是8080,不能修改(所以必須部署在不同的機(jī)器上)。

如果修改端口了,需要修改diamond的配置,請(qǐng)將diamond-utils工程下的com.taobao.diamond.common.Constants類中的DEFAULT_PORT常量修改成對(duì)應(yīng)的端口號(hào)。

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

127.0.0.1

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

安裝完成后,請(qǐng)?jiān)趖omcat的webapps下建立文件夾diamond-server和pushit-server,diamond-server中再建立diamond文件,文件內(nèi)容是diamond-server的地址列表,一行一個(gè)地址,地址為ip;pushit-server中也建立diamond文件,文件內(nèi)容是pushit-server的地址列表,一行一個(gè)地址,地址為ip:port(pushit后文會(huì)進(jìn)行敘述)

(5)pushit

pushit是一個(gè)輕量級(jí)的消息通知服務(wù)組件,用來(lái)為diamond做實(shí)時(shí)通知服務(wù),通知客戶端數(shù)據(jù)的變化,它也是CS的結(jié)構(gòu),服務(wù)端搭建步驟如下:

在pushit源代碼根目錄下,執(zhí)行mvncleanpackageassembly:assembly-Dmaven.test.skip命令,成功后會(huì)在pushit/target目錄中看到pushit-pushit.tar.gz包。

執(zhí)行tar-xzvfpushit-pushit.tar.gz,進(jìn)行解壓。

進(jìn)入pushit目錄,建立logs目錄,在logs目錄中建立pushit.log文件。

進(jìn)入pushit/bin目錄,執(zhí)行./pushit-startup.sh../conf/server.properties命令,啟動(dòng)pushit-server

(6)redis

redis用來(lái)存放一些跟統(tǒng)計(jì)相關(guān)的信息。

redis的安裝請(qǐng)參考redis的官方文檔。

安裝完成后,請(qǐng)?jiān)赿iamond-server的配置文件redis.properties中填寫對(duì)應(yīng)的信息。

完成以上6步后,server端的搭建就完成了。

2、發(fā)布數(shù)據(jù)

diamond發(fā)布數(shù)據(jù)通過(guò)手工的方式進(jìn)行。

修改diamond-server的配置文件user.properties,以k=v的方式添加登錄diamond-server的用戶名和密碼。

在瀏覽器中輸入http://ip:port/diamond-server/,ip和port為server搭建的第(2)步中的地址和端口,登錄后進(jìn)入后臺(tái)管理界面,然后點(diǎn)擊“配置信息管理”——“添加配置信息”,在輸入框中輸入dataId、group、內(nèi)容,最后點(diǎn)擊“提交”即可。

成功后,可以在“配置信息管理”中查詢到發(fā)布的數(shù)據(jù)。

3、訂閱數(shù)據(jù)

diamond客戶端API主要提供了訂閱數(shù)據(jù)的功能.

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

獲取服務(wù)端地址對(duì)客戶端是透明的,客戶端僅僅需要在本地進(jìn)行如下域名綁定即可:

domainip

其中,domain的值與diamond-utils工程下的com.taobao.diamond.common.Constants類中的DEFAULT_DOMAINNAME和DAILY_DOMAINNAME的值相同,ip為server搭建第(4)步中的httpserver地址。

(2)創(chuàng)建訂閱者

DiamondManager manager = new DefaultDiamondManager(group, dataId, new ManagerListener() {
   public void receiveConfigInfo(String configInfo) {
      // 客戶端處理數(shù)據(jù)的邏輯
   }
});

參數(shù)的說(shuō)明:

group和dataId為String類型,二者結(jié)合為diamond-server端保存數(shù)據(jù)的惟一key

ManagerListener是客戶端注冊(cè)的數(shù)據(jù)監(jiān)聽(tīng)器,它的作用是在運(yùn)行中接受變化的配置數(shù)據(jù),然后回調(diào)receiveConfigInfo()方法,執(zhí)行客戶端處理數(shù)據(jù)的邏輯。如果要在運(yùn)行中對(duì)變化的配置數(shù)據(jù)進(jìn)行處理,就一定要注冊(cè)ManagerListener

(3)獲取配置數(shù)據(jù)

String configInfo = manager.getAvailableConfigInfomation(timeout);

diamond-server端保存的配置全都為文本類型,返回給客戶端的配置數(shù)據(jù)為java.lang.String類型,timeout為從網(wǎng)絡(luò)獲取配置數(shù)據(jù)的超時(shí)時(shí)間。客戶端調(diào)用每次調(diào)用該方法,都能夠保證獲取一份最新的可用的配置數(shù)據(jù)。

總結(jié)

以上是生活随笔為你收集整理的淘宝JAVA中间件Diamond详解(一)---简介&快速使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。