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;
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淘宝框架使用相关推荐
- 淘宝框架atlas集成
淘宝框架atlas 官网 文档 github 视频资料 如有错误请指正! 简介 Atlas是伴随着手机淘宝的不断发展而衍生出来的一个运行于Android系统上的一个容器化框架,我们也叫动态组件化(Dy ...
- 淘宝框架atlas基本使用说明
转自:http://blog.csdn.net/wdd1324/article/details/76855408 官网 文档 github 视频资料 如有错误请指正! 简介 Atlas是伴随着手机淘宝 ...
- 淘宝客户端高性能高稳定性施用框架的构架
看到淘宝如此强大的客户端,我不禁想你淘宝客户端的张毅(江湖名号:陶钧)在ADC中对于淘宝框架剖析讲解: 议程包含三大点: 淘宝 Android客户端开发的特点和挑战 HOW TO: TaoBao Cl ...
- 卖家想要真正的做好淘宝,就必须掌握这些重点!
现在做淘宝很多人感觉越来越难,事实上淘宝并没有那么复杂,它始终围绕着展现.点击和转化这三个重点在转.很多卖家做淘宝之所以总是做不好,主要是因为大家在店铺运营的过程中忽略掉了一些重点.下面,小编将根据多 ...
- 淘宝高可用高伸缩高性能框架之实现
一,应用无状态(淘宝session框架) 俗话说,一个系 统的伸缩性的好坏取决于应用的状态如何管理.为什么这么说呢?咱们试想一下,假如我们在session中保存了大量与客户端的状态信 息的话,那么当保 ...
- 淘宝分布式框架Fourinone2.0正式版发布
淘宝Fourinone2.0提供了一个4合1分布式框架和简单易用的编程api,实现对多台计算机cpu,内存,硬盘的统一利用,从而获取到强大计算能力去解决复杂问题.Fourinone框架提供了一系列并行 ...
- 淘宝分布式调度框架TBSchedule
一.TBSchedule初识 时下互联网和电商领域,各个平台都存在大数据.高并发的特点,对数据处理的要求越来越高,既要保证高效性,又要保证安全性.准确性.TBSchedule的使命就是将调度作业从业务 ...
- 淘宝开源Android容器化框架Atlas开发者指南
Atlas 由阿里巴巴移动团队自研,以容器化思路解决大规模团队协作问题,实现并行开发.快速迭代和动态部署,适用于 Android 4.x 以上系统版本的大小型 App 开发. 该框架于2017年3月1 ...
- SSH框架实现仿淘宝购物demo
还记得六月份实习的时候,以前做过一个电商的项目.项目里面须要实现相似淘宝购物车的移动端的demo.随着项目的进行,再一次跟购物车碰面,可是今天呢,不是移动端的需求.怎样使用SSH框架实现相似淘宝的购物 ...
最新文章
- HTML5 Web SQL数据库
- 昆明大专学计算机,昆明冶金高等专科学校2020年云南省高等教育招收中等职业学校学生 (计算机类)考试大纲...
- php中gd为什么是乱码的,php gd库中文乱码怎么解决?
- python 分割不等长字符串表格_python如何将字符串等长分割
- jetson nano 人体姿态识别
- Quartz的CronTrigger
- 欧瑞变频器800参数设置_(完整版)ACS800变频器参数设定
- python表情包合集_python——简单生成表情包
- 星际争霸 vs 魔兽争霸3 vs 红警完全对比
- 表设计原则_表格设计原则
- select搜索功能实现
- 移动用户远程接入L2TP配置详解
- 断臂求生!捷信全线退出医美市场
- cifar 10 最高正确率
- 用SkinMagic工具包创建换皮肤程序
- AutoCAD套合(叠加)卫星影像和矢量路网数据-CAD配准
- Hydro李天放:为了区块链我曾拒绝了李开复
- 浅谈短视频背后的社会道德伦理问题(个人观点,仅供参考)
- 5-1 N个数求和 (20分)
- Android 锁屏后Service服务保活(支持9.0)
热门文章
- 整数判重、大整数Hash
- 数据结构实验三:Huffman树及Huffman编码的算法实现
- 对现有的所能找到的DDOS代码(攻击模块)做出一次分析----其他(攻击方式)篇
- NAT 及 NAT 打洞技术
- C++的最后一道坎|百万年薪的程序员
- 2021大厂面试高频100题最新汇总(附答案详解)
- “逃离”单体,GitHub的微服务架构实践
- 10 个超炫酷后台控制面板(附 GitHub下载链接)
- Linux(CentOS)中常用软件安装,使用及异常——XManager, 中文支持,JDK
- Go udp 的高性能优化