【转】diamond专题(一)– 简介和快速使用

大家好,今天开始为大家带来我们通用产品团队的产品——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用户登录,建立用户并赋予权限,建立数据库,然后建表,语句分别如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

create database diamond;

grant all on diamond.* to [email protected]’%’  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是diamondserver的运行容器。

tomcat的安装请参考tomcat官方文档,建议使用tomcat7

不需要对tomcat进行任何改动。

(3)diamondserver

在diamond-server源代码根目录下,执行mvncleanpackage-Dmaven.test.skip,成功后会在diamond-server/target目录下生成diamond-server.war(如果没有安装maven,请参考maven官方文档进行安装)。

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

启动tomcat,即启动了diamond-server

(4)httpserver

httpserver用来存放diamondserver等地址列表,可以选用任何httpserver,这里以tomcat为例。

一般来讲,httpserver和diamondserver是部署在不同机器上的,这里简单起见,将二者部署在同一个机器下的同一个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)客户端获取服务端地址

获取服务端地址对客户端是透明的,客户端仅仅需要在本地进行如下域名绑定即可:

ipa.b.c

ip为前面搭建的http-server的ip

(2)创建订阅者


1

2

3

4

5

6

7

8

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)获取配置数据

StringconfigInfo=manager.getAvailableConfigureInfomation(timeout);

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

原文地址:http://aliapp.blog.51cto.com/8192229/1325689

时间: 2024-10-15 02:38:29

【转】diamond专题(一)– 简介和快速使用的相关文章

[z]Diamond简介和快速应用

source from http://blog.csdn.net/chabale/article/details/8900500 一.概况 diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是简单.可靠.易用,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管理. diamond为应用系统提供了获取配置的服务,应用不仅可以在启动时从diamond获取相关的配置,而且可以在运行中对配置数据的变化进行感知并获取变化后的配置数据. 持久配置是指配置数据会持久化到磁盘和数据库中.

[你必须知道的NOSQL系列]专题二:Redis快速入门

一.前言 在前一篇博文介绍了MongoDB基本操作,本来打算这篇博文继续介绍MongoDB的相关内容的,例如索引,主从备份等内容的,但是发现这些内容都可以通过官方文档都可以看到,并且都非常详细,所以这里就不想继续介绍了,需要用到的朋友到官方文档进行查阅:http://docs.mongodb.org/manual/tutorial/remove-indexes/.本专题将介绍另一个NoSQL——Redis的相关内容. 二.Redis介绍 关于Redis大家肯定多多少少都有所了解,Redis一般都

Spring Boot基础:Spring Boot简介与快速搭建(1)

1. Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建.运行.调试.部署等. Spring Boot默认使用tomcat作为服务器,使用logback提供日志记录. 2. Spring Boot快速搭建 2.1 Maven项目构建 Maven构建网址:http://start.spring.io/ Spring Boot基础结构: ◊ src/main/java:程序开发以及主程序入口 ◊ src/main/res

【转】diamond专题(四)—— 容灾机制

特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/ 大家好,本次为大家带来diamond的容灾机制.diamond之所以表现的稳定可靠,除了架构简单之外,另一个重要原因是diamond具有一套完备的容灾机制,容灾机制涉及到client和server两部分,主要包括以下几个方面: 1.server存储数据的方式. server存储数据

Android Advertising ID 简介以及快速集成和使用

AdVertising ID (广告ID) 广告id是用户特殊的,独特的,可重置的广告id,由Google Play Service 提供,它为用户更好的控制,为开发人员提供简单.标准的系统继续使用你的应用程序,它用于广告目的的匿名标示符和或者重置起标示符或者退出以利益为基础的Google Play的医用程序. 广告 ID 可以通过简单的API在你的应用程序中实现. 重点开发功能 标准简单--广告标识是一个标准的一部分,为广告和简单的系统进行分析. 让用户控制--用户可以在任何时候设置他们的ID

NodeMCU简介与快速入门

NodeMCU是在微控制器上运行LUA的固件引擎.目前支持ESP8266Ex芯片及其模块. 1.硬件 NodeMCU Devkit GPIO 2.软件 https://github.com/nodemcu 3.刷机 esptool windows上 4.LUA控制台 minicom xconsole 5.运行测试

spring简介以及快速使用

spring框架是一个管理对象的创建.依赖以及销毁和事务管理的容器.spring主要是IOC(Inversion of Control)控制反转和AOP(Aspect Oriented Programming)面向切面编程. 怎么使用: 1.导入jar包(日志:commons-loggings,springjar包:beans,context,core,expression) 2.配置spring配置文件 <?xml version="1.0" encoding="UT

SNF快速开发平台3.1之-- SNF.WorkFlow审核流简介

本项目是的在Spring.Net.Framework 平台之上进行研发.SNF.WorkFlow审核流是一款完全自主知识产权研发的为软件项目. 审核流基本概念:什么是审核流? 审核流:两个或两个以上的人,为了共同的目标,连续的以串行或并行的方式去完成某一业务. 业务:审核流所指业务涵盖了与经营相关的活动. 串行或并行:业务中的步骤也许以一步接着一步的方式进行,我们称之为串行:或者由不同的人或组合根据不同的情况处理,我们称之为并行. 两个或两个以上的人:如审核流的名称所表达的含义,一个人处理的业务

SNF开发平台WinForm之十三-时间轴控件使用-SNF快速开发平台3.3-Spring.Net.Framework

一.显示效果如下: 二.在控件库里选择UCTimeAxis 拖拽到窗体里. 三.加入以下代码,在load事件里进行调用就可以运行了. #region 给时间轴控件加载数据 private void UCTimeAxisData() { //增加节点 List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>(); list.Add(new KeyValueP