特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处: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 打包

  1. 修改diamond-server/src/main/resources/system.properties文件,将diamond.server.addr的值换成Diamond服务器所在机器的ip地址
  2. 修改diamond-server/src/main/resources/jdbc.properties文件,配置mysql服务器的url,用户名和密码
  3. 在根目录执行打包命令
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 在配置中心界面添加一个配置

  1. 登陆配置中心(本机是127.0.0.1:8080),用户名abc,密码123
  2. 点击左侧“配置信息管理”
  3. 点击添加配置信息
  4. 输入data_id(就是配置的id,3中的${your_config_data_id})和配置内容
  5. 点击“提交”
  6. 在更新配置时,客户端会调用ManagerListener的回调函数receiveConfigInfo,参数就是最新的配置内容

5原文地址

https://github.com/gzllol/diamond

最新文章

  1. 利用django创建一个投票网站(六)
  2. [收藏]C++简单五子棋
  3. RSA密钥生成与使用
  4. sql server 常见问题笔记
  5. ListView中响应item的点击事件并且刷新界面
  6. OpenGL绘制棱锥,剔除
  7. Tomcat 使用过程中的一些技巧
  8. UIView的属性
  9. 《剑指offer》和为S的两个数字
  10. VMware安装CentOS7系统
  11. hdoj3138
  12. Ignite(一): 概述
  13. H5在WebView上开发小结
  14. Up-to-date cache with EclipseLink and Oracle
  15. 虚拟机中扩展linux系统存储空间
  16. php用get方式传json数据 变成null了
  17. 风险管理,未雨绸缪——《代码之殇》读书笔记II
  18. C51中遇到一个有关data与xdata的问题,已解决
  19. 170711、Linux下搭建MySQL集群
  20. HDU4003 树形DP

热门文章

  1. 面试常考的js题目(一)
  2. loj 6043「雅礼集训 2017 Day7」蛐蛐国的修墙方案
  3. katalon设置Android SDK路径
  4. Django框架——基础之模型系统(ORM相关操作)
  5. MySQL--高性能MySQL笔记一
  6. Clang编译选项和Pass构建
  7. (转)FPS游戏服务器设计的问题
  8. deep_learning_Function_tf.control_dependencies([])
  9. python分别获取虚拟网卡和真实网卡ip
  10. [易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates]