特別提示:本人博客部分有參考網絡其他博客,但均是本人親手編寫過並驗證通過。如發現博客有錯誤,請及時提出以免誤導其他人,謝謝!歡迎轉載,但記得標明文章出處:
http://www.cnblogs.com/mao2080/
一、簡介
- Diamond是淘寶研發的分布式配置管理系統。使用Diamond可以讓集群中的服務進程動態感知數據的變化,無需重啟服務就可以實現配置數據的更新。
- 具有簡單、可靠、易用等特點
二、使用方法
服務端搭建
1 准備工作
- 安裝jdk
- 安裝maven
- 安裝tomcat
- 安裝mysql
2 啟動mysql並創建數據庫和表
-- 創建Diamond數據庫
CREATE DATABASE IF NOT EXISTS `diamond` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `diamond`;
-- 配置表
CREATE TABLE IF NOT EXISTS `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`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- 數據導出被取消選擇。
-- 組表
CREATE TABLE IF NOT EXISTS `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`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
3 下載源碼
git clone https://github.com/gzllol/diamond.git
4 打包
- 修改diamond-server/src/main/resources/system.properties文件,將diamond.server.addr的值換成Diamond服務器所在機器的ip地址
- 修改diamond-server/src/main/resources/jdbc.properties文件,配置mysql服務器的url,用戶名和密碼
- 在根目錄執行打包命令
mvn clean package -Dmaven.test.skip=true
5 用tomcat加載diamond-server/target/diamond-server.war
客戶端使用
1 將diamond-client jar包發布到maven倉庫
mvn clean deploy -Dmaven.test.skip=true
2 在工程中引入jar包
<dependency>
<groupId>com.taobao.diamond</groupId>
<artifactId>diamond-client</artifactId>
<version>2.0.5.4.taocode-SNAPSHOT</version>
</dependency>
3 使用例子
DiamondManager manager = new DefaultDiamondManager("${your_config_data_id}", new ManagerListener() {
@Override
public Executor getExecutor() {
return null;
}
@Override
public void receiveConfigInfo(String configInfo) {
System.out.println("receive config: " + configInfo);
}
});
4 在配置中心界面添加一個配置
- 登陸配置中心(本機是127.0.0.1:8080),用戶名abc,密碼123
- 點擊左側“配置信息管理”
- 點擊添加配置信息
- 輸入data_id(就是配置的id,3中的${your_config_data_id})和配置內容
- 點擊“提交”
- 在更新配置時,客戶端會調用ManagerListener的回調函數receiveConfigInfo,參數就是最新的配置內容