一、概况

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;

use diamond

CREATE TABLE `config_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data_id` varchar(100) DEFAULT NULL,
  `group_id` varchar(100) DEFAULT NULL,
  `content` varchar(100) DEFAULT NULL,
  `md5` varchar(100) DEFAULT NULL,
  `gmt_create` datetime DEFAULT NULL,
  `gmt_modified` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

完成后,请将数据库的配置信息(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)步中的地址,以abc为用户名,123为密码,登录后进入后台管理界面,然后点击“配置信息管理”—— “添加配置信息”,在输入框中输入dataId、group、内容,最后点击“提交”即可。

成功后,可以在“配置信息管理”中查询到发布的数据。

3、订阅数据

diamond客户端API主要提供了订阅数据的功能.

(1)客户端获取服务端地址

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

ip    a.b.c

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

(2)创建订阅者

public class DiaMondTest {

public static void main(String[] args) {
DiamondManager manager = new DefaultDiamondManager("t_group", "t_dataid", new ManagerListener() {

public Executor getExecutor() {
System.out.println("==========getExecutor========");
return null;

}

public void receiveConfigInfo(String configInfo) {

// 客户端处理数据的逻辑
System.out.println("==========configInfo========"+configInfo);

}

});

System.out.println("==="+manager.getAvailablePropertiesConfigureInfomation(5000));

//System.out.println("==s="+configInfo);

}

}

参数的说明:

group和dataId为String类型,二者结合为diamond-server端保存数据的惟一key

ManagerListener 是客户端注册的数据监听器, 它的作用是在运行中接受变化的配置数据,然后回调receiveConfigInfo()方法,执行客户端处理数据的逻辑。如果要在运行中对变化的配置数据进行处理,就一定要注册ManagerListener

(3)获取配置数据

String configInfo = manager.getAvailableConfigureInfomation(timeout);

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

diamond淘宝框架使用相关推荐

  1. 淘宝框架atlas集成

    淘宝框架atlas 官网 文档 github 视频资料 如有错误请指正! 简介 Atlas是伴随着手机淘宝的不断发展而衍生出来的一个运行于Android系统上的一个容器化框架,我们也叫动态组件化(Dy ...

  2. 淘宝框架atlas基本使用说明

    转自:http://blog.csdn.net/wdd1324/article/details/76855408 官网 文档 github 视频资料 如有错误请指正! 简介 Atlas是伴随着手机淘宝 ...

  3. 淘宝客户端高性能高稳定性施用框架的构架

    看到淘宝如此强大的客户端,我不禁想你淘宝客户端的张毅(江湖名号:陶钧)在ADC中对于淘宝框架剖析讲解: 议程包含三大点: 淘宝 Android客户端开发的特点和挑战 HOW TO: TaoBao Cl ...

  4. 卖家想要真正的做好淘宝,就必须掌握这些重点!

    现在做淘宝很多人感觉越来越难,事实上淘宝并没有那么复杂,它始终围绕着展现.点击和转化这三个重点在转.很多卖家做淘宝之所以总是做不好,主要是因为大家在店铺运营的过程中忽略掉了一些重点.下面,小编将根据多 ...

  5. 淘宝高可用高伸缩高性能框架之实现

    一,应用无状态(淘宝session框架) 俗话说,一个系 统的伸缩性的好坏取决于应用的状态如何管理.为什么这么说呢?咱们试想一下,假如我们在session中保存了大量与客户端的状态信 息的话,那么当保 ...

  6. 淘宝分布式框架Fourinone2.0正式版发布

    淘宝Fourinone2.0提供了一个4合1分布式框架和简单易用的编程api,实现对多台计算机cpu,内存,硬盘的统一利用,从而获取到强大计算能力去解决复杂问题.Fourinone框架提供了一系列并行 ...

  7. 淘宝分布式调度框架TBSchedule

    一.TBSchedule初识 时下互联网和电商领域,各个平台都存在大数据.高并发的特点,对数据处理的要求越来越高,既要保证高效性,又要保证安全性.准确性.TBSchedule的使命就是将调度作业从业务 ...

  8. 淘宝开源Android容器化框架Atlas开发者指南

    Atlas 由阿里巴巴移动团队自研,以容器化思路解决大规模团队协作问题,实现并行开发.快速迭代和动态部署,适用于 Android 4.x 以上系统版本的大小型 App 开发. 该框架于2017年3月1 ...

  9. SSH框架实现仿淘宝购物demo

    还记得六月份实习的时候,以前做过一个电商的项目.项目里面须要实现相似淘宝购物车的移动端的demo.随着项目的进行,再一次跟购物车碰面,可是今天呢,不是移动端的需求.怎样使用SSH框架实现相似淘宝的购物 ...

最新文章

  1. JavaScript停止冒泡和阻止浏览器默认行为
  2. git add -u与-A .三者的区别
  3. 使用lucce分词怎么_深度学习时代,分词真的有必要吗
  4. GIt本地相关操作(一)
  5. sas table将缺失值计入百分比_SAS:通过数据块填充缺失值
  6. 爬虫python下载视频_用python做爬虫下载视频
  7. Dos命令删除添加新服务
  8. 使用RESIZE方法解决临时表空间(TEMP)过大问题
  9. IDEA自动编译不用每次make
  10. HDU2537 8球胜负【水题】
  11. Anaconda使用conda连接网络时,出现网络错误CondaHTTPError(包括Anaconda安装与入门)
  12. 支付宝小程序:报错 insufficient-isv-permissions 错误原因: ISV权限不足解决方案
  13. qq相册回收站复原显示服务器繁忙,qq回收站照片怎么找回?3大恢复方法3分钟解决...
  14. Rocket - tilelink - Xbar
  15. linux键盘触摸板失灵,ubuntu linux 触控板失灵的解决方案
  16. Linux笔记 No.17---(磁盘分区fdisk,gdisk,parted、格式化mkfs,mke2fs、挂载mount、卸载umount、df、du、lsof命令)
  17. 为VMware vSphere创建CentOS 7 Terraform模板
  18. “第一股”争夺战:每日优鲜、叮咚买菜及美菜网谁能杀出重围?
  19. 如何写好一个产品需求文档PRD
  20. PMBOK2012的几种合同形式 PPP和BOT

热门文章

  1. 中国科学院大学计算机与科学技术学院,贺思敏 - 中国科学院大学 - 计算机科学与技术学院...
  2. EXE和SYS通信IOCTL方式
  3. 开箱即用的微服务框架 Go-zero(进阶篇)
  4. 从新冠疫情出发,漫谈 Gossip 协议
  5. 内核虚拟机原理|网络可编程
  6. 带你深入理解分布式事务,掌握后台分布式核心技术,PS:送5本!
  7. 程序员应该知道的那些画图工具-第一期
  8. 【今晚七点半】:对话平行未来姜雨晴——重启熊猫直播背后的故事
  9. HDR:为用户打造的视觉盛宴
  10. Mozilla裁员波及Daala Codec团队