大家好,今天开始为大家带来我们通用产品团队的产品 —— 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.getAvailableConfigureInfomation(timeout);

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

本文来源于"阿里中间件团队播客",原文发表时间"  2012-04-17  "

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专题(一)– 简介和快速使用

    (转自 http://blog.csdn.net/zh_winer/article/details/50395024) 一.概况 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. 第3关:单链表循环队列
  2. mysql ERROR 1042 (HY000): Can't get hostname for your address
  3. 双线性插值理论与代码实例
  4. 周一“开小差” 淘宝又崩了
  5. STL数组处理常用函数
  6. (1)简单工厂模式C++实现
  7. 死磕单点登录的实现原理....
  8. 【UVA1339】古老的密码(巧妙思路+(q)sort降序排列的三种方法)
  9. python正则表达式匹配多字符(一)
  10. c# word 增加段落_word排版技巧:如何防止行距随字号而改变?
  11. Mac与Linux SSH无密登陆(互信)
  12. 第一天计算机谁发明的,世界公认三大天才,尼古拉特斯拉是当之无愧的第一天才...
  13. word2013无法撤销解决方法-有效
  14. 【Fiddle】The Fiddler AutoResponder is enabled, but this request did not match any of the listed rules
  15. 一文带你了解UI自动化测试框架
  16. stm32波特率配置
  17. nii文件中的方向理解
  18. 射频标签技术特征的分类
  19. ionic升华过程8-cordova插件+mui小案例
  20. Noilinux 2.0 wps2019不能输入中文解决办法!

热门文章

  1. [转]Shell脚本中发送html邮件的方法
  2. visualVM 安装使用
  3. 字符串(string类)
  4. unix编程艺术的设计原则
  5. 自动禁止ssh的root登陆
  6. 隐藏表白图“我喜欢你”就像你看不见但它也依然存在
  7. python图片旋转脚本_Python+OpenCV 实现图片无损旋转90°且无黑边
  8. lxml安装_Beautiful Soup的安装和使用
  9. 教你在 Kubuntu 21.10 中升级 KDE Plasma 5.24
  10. java auth fail_com.jcraft.jsch.JSchException: Auth fail