(转自 http://blog.csdn.net/zh_winer/article/details/50395024)

一、概况

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.getAvailableConfigureInfomation(timeout);

diamond-server端保存的配置全都为文本类型,返回给客户端的配置数据为java.lang.String类型,timeout为从网络获取配置数据的超时时间。客户端调用每次调用该方法,都能够保证获取一份最新的可用的配置数据。

参考:http://blog.csdn.net/chenzhongwei99/article/details/49491659

   http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29126521&id=3853860

   http://blog.csdn.net/a137268431/article/details/51262274

转载于:https://www.cnblogs.com/huqianliang/p/5673907.html

diamond专题(一)– 简介和快速使用相关推荐

  1. 图数据库HugeGraph简介与快速入门

    图数据库HugeGraph简介与快速入门 作者:胡佳辉(家辉),日期:2019年2月10日 CSDN博客:https://blog.csdn.net/gobitan 1. HugeGraph简介 1. ...

  2. 杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)

    杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)[模板] 传送门 杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)[模板] 矩阵快速幂模板 Count Problem Descript ...

  3. FastAPI简介与快速体验

    [原文链接]FastAPI简介与快速体验 文章目录 一.FastAPI简介 二.FastAPI的特点 三.安装 3.1 安装 fastapi 3.2 安装 ASGI 服务器 四.FastAPI快速体验 ...

  4. diamond专题(一)-- 简介和快速使用

    大家好,今天开始为大家带来我们通用产品团队的产品 -- diamond的专题,本次为大家介绍diamond的概况和快速使用. 一.概况 diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是 ...

  5. USEARCH11命令大全,200+命令中文简介,快速查找需要功能

    序列比对 嵌合体检测和过滤 序列.树和基于图形的聚类 距离矩阵 多样性分析 fastq格式文件处理 Fasta和fastq文件处理格式 机器学习和鉴定有用OTUs 其它命令 OTU分析和去噪 OTU表 ...

  6. MyBatis-Plus之简介、快速入门、insert、update

    MyBatis-Plus简介 顾名思义,MyBatis-Plus是一个MyBatis的增强工具,是用来简化JDBC操作的,它可以大量节省我们的工作时间,因为所有的CRUD代码它都可以自动化完成,与My ...

  7. WEEX框架(一)框架简介和快速上手体验

    框架简介 Weex,是能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验的框架,并支持iOS.安卓.Web等多端部署,由阿里巴巴研发和维护. 对于移动开发者来说,W ...

  8. ORAN专题系列-0: O-RAN快速索引

    专题一:O-RAN的快速概述 <ORAN专题系列-1:什么是开放无线接入网O-RAN>ORAN专题系列-1:什么是开放无线接入网O-RAN_文火冰糖的硅基工坊的博客-CSDN博客_什么是o ...

  9. crow-han(基于go-micro框架的微服务脚手架)-01-快速启动(简介、快速启动、接口测试)

    文章目录 1. 简介 1.1 包含内容 1.2 swagger展示 2. 快速启动 2.1 下载 2.2 环境变量配置 2.3 goland配置 2.5 启动 2.6 查看结果 3. swagger ...

最新文章

  1. 【JavaScript】JavaScript模拟Class
  2. Apache 内容动态缓冲模块 mod
  3. 课程三、电子商务物流解决方案
  4. oracle sql语句怎么查询所有存储过程中是否包含某个注释?
  5. jboss与nginx_JBoss BRMS与JasperReports进行报告
  6. UVa 439 - Knight Moves
  7. 感觉自己做这个题的思路很不错 1225 Digit Counting
  8. 单例设计模式之间的区别
  9. Mac OS 10.12 - 如何关闭Rootless机制?
  10. php实现简单的框架,PHP 实现简单的 MVC 框架
  11. ubuntu linux桌面快捷方式,Ubuntu下生成桌面快捷方式
  12. es6文档笔记(全)
  13. 有道词典与奇迹背单词生词本同步
  14. Docker1.1 虚拟化
  15. 一招解决 Mac JD-JUI 打不开问题
  16. Arduino Web Editor网页编辑器入门
  17. Altium Designer 18中的System–Transparency
  18. 《软技能-代码之外的生存指南》读书笔记
  19. PDF Explained(翻译)第七章 文档元数据和导航
  20. 汽车圈的「围城」与「内卷」

热门文章

  1. 使用反射获取类的静态属性值
  2. JAVA并发之多线程基础(3)
  3. bash脚本之条件判断
  4. 比特币科普:区块链技术神奇在哪里?
  5. 在Chrome浏览器中保存的密码有多安全?
  6. 活动目录回收站之终极应用---Windows2008 R2 新功能系列之十一
  7. iOS动画系列之四:基础动画之平移篇
  8. SynchronizedMap和ConcurrentHashMap 区别
  9. 恢复误删除的域用户及几个查询命令
  10. mysql utf-8转utf8mb4_MySQL UTF8 转为 utf8mb4