diamond简介和搭建
diamond简单介绍
diamond简述
diamond是阿里巴巴开源的一款配置中心服务。
diamond中文意思是钻石,而钻石的特点有小巧、珍贵、稳定。小巧:
在如今的互联网公司中配置服务作为基础的中间件,其核心功能比较简单就是存储并管理配置数据,功能单一。
珍贵:
随着公司业务线增加及规模的扩大,传统的基于配置文件、尤其是多环境下繁杂、易出错的配置和需要动态感知配置变化时,
统一化的配置服务显得弥足重要,对开发人员更加友好,也避免了系统频繁上线。
稳定:
充分考虑线上环境可能出现由于网络、磁盘等引起各种不确定情况,提供高可用及容灾方案。
架构设计
Diamond架构由三部分组成:ConfigServer、DataServer和MySql存储,如下图所示:
ConfigServer:管理DataServer集群,将客户端与DataServer集群解耦,上下线、扩容对客户端不感知;
DataServer:提供配置的持久化管理、动态推送等服务;
MySql存储:配置数据的持久化存储,采用一主两备的部署方式保障数据的安全;
Write流程
DataServer接受到写请求后,
首先将配置数据持久化到DB
然后将配置数据变更事件异步广播到集群所有机器,包括自己在内,如下图所示:注意:
DataServer会把数据持久化到DB之后,再写到本地缓存;
主备切换期间,写服务不可用;
Read流程
DataServer读数据的时候,会先从本地缓存中读取,本地缓存不存在,再查询DB。
高可靠性:完善的容灾机制
DB主备容灾,Master挂掉后自动切换到备库,继续提供读写服务;
DB主备全部挂掉后,通过服务端本地缓存,仍可提供读服务;
DB和服务端全部挂掉后,通过客户端容灾目录下的缓存,仍可提供读服务;高吞吐量
本地缓存+Zero Copy。
首先,每台服务器以本地磁盘文件的形式缓存全量配置数据;
这样每次读请求就是一次静态文件请求,使用Zero Copy提高吞吐量实时推送
采用长轮询方式实现配置数据的实时推送
diamond搭建
服务端搭建
1、准备工作
安装jdk
安装maven
安装tomcat
安装mysql
2、启动mysql并创建数据库和表
-- 创建Diamond数据库
CREATE DATABASE IF NOT EXISTS `diamond`
USE `diamond`;-- 配置表
CREATE TABLE IF NOT EXISTS `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 '',`src_ip` varchar(20) DEFAULT NULL,`src_user` varchar(20) DEFAULT NULL,`create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',`modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',PRIMARY KEY (`id`),UNIQUE KEY `uk_config_datagroup` (`data_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;-- 数据导出被取消选择。-- 组表
CREATE TABLE IF NOT EXISTS `group_info` (`id` bigint(64) unsigned NOT NULL AUTO_INCREMENT,`address` varchar(70) NOT NULL DEFAULT '',`data_id` varchar(255) NOT NULL DEFAULT '',`group_id` varchar(128) NOT NULL DEFAULT '',`src_ip` varchar(20) DEFAULT NULL,`src_user` varchar(20) DEFAULT NULL,`create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',`modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',PRIMARY KEY (`id`),UNIQUE KEY `uk_group_address` (`address`,`data_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
3、下载源码
git clone https://github.com/gzllol/diamond.git
4、打包
修改diamond-server/src/main/resources/system.properties文件,将diamond.server.addr的值换成Diamond服务器所在机器的ip地址修改diamond-server/src/main/resources/jdbc.properties文件,配置mysql服务器的url,用户名和密码在根目录执行打包命令:
mvn clean package -Dmaven.test.skip=true
5、用tomcat加载diamond-server/target/diamond-server.war
客户端使用
1、将diamond-client jar包发布到maven仓库
mvn clean deploy -Dmaven.test.skip=true
2、在工程中引入jar包
<dependency><groupId>com.taobao.diamond</groupId><artifactId>diamond-client</artifactId><version>2.0.5.4.taocode-SNAPSHOT</version>
</dependency>
3、使用例子
DiamondManager manager = new DefaultDiamondManager("${your_config_data_id}", new ManagerListener() {@Overridepublic Executor getExecutor() {return null;}@Overridepublic void receiveConfigInfo(String configInfo) {System.out.println("receive config: " + configInfo);}
});DefaultDiamondManager有三个参数分别是:groupId,dataId和listener。group和dataId为String类型,二者结合为diamond-server端保存数据的惟一keyManagerListener 是客户端注册的数据监听器, 它的作用是在运行中接受变化的配置数据,
然后回调receiveConfigInfo()方法,执行客户端处理数据的逻辑。
如果要在运行中对变化的配置数据进行处理,就一定要注册ManagerListener
如果要深入了解源码,可以参考这篇文章
4、在配置中心界面添加一个配置登陆配置中心(本机是127.0.0.1:8080),用户名abc,密码123点击左侧“配置信息管理”点击添加配置信息输入data_id(就是配置的id,3中的${your_config_data_id})和配置内容
点击“提交”在更新配置时,客户端会调用ManagerListener的回调函数receiveConfigInfo,参数就是最新的配置内容
diamond简介和搭建相关推荐
- 配置持久化框架diamond简介及高阶应用
配置持久化框架diamond简介及高阶应用 前言 一.简介 二.特点 三.应用场景 四.server搭建 五.发布配置数据 六.简单应用 七.高阶应用 八.spring动态集成diamond 结束语 ...
- Nexus私服简介及搭建
nexus私服简介及搭建 一 私服是什么? 1.1 私服的作用 1.2 Nexus下载 1.3 使用Nexus搭建私服 1.3.1可以修改默认端口 1.4 登陆私服时密码不对的问题解决方案 二私服的使 ...
- 【存储】GPFS简介及搭建
[存储]GPFS简介及搭建 第一章 GPFS简介 1.1 GPFS 文件系统介绍 IBM的GPFS(General Parallel File System,通用并行文件系统)可以让用户共享文件系统 ...
- NFS(网络文件系统)简介及搭建
NFS简介及搭建 网络文件系统 定义 演化 特点 工作原理 网络文件系统架构 网络文件系统协议 网络文件系统中的创新 网络文件系统的替代物 部署NFS 实验环境 安装nfs.rpcbind服务 在no ...
- 树莓派4b入门之开发RFID系统—简介、搭建MFRC522-SPI环境
树莓派4b入门之开发RFID系统-简介.搭建MFRC522-SPI环境 一.系统简介 二.模块连接 1.引脚定义 2.接口对应关系 三.搭建接口环境 1.开启SPI 2.模块功能设计 3.安装SPI ...
- ad hoc模式的wifi网简介及其搭建
Ad hoc模式的wifi网简介及搭建 1.wireless-fidelity(wifi)定义及组成:使用IEEE802.11标准协议的局域网,通常称为wifi.它的基础组成是:无线网卡及一台AP(网 ...
- Beego框架简介准备搭建分布式爬虫
一.Beego简介 用scaffold脚手架工具搭建框架 每个方法都有@Router注解 Beego是MVC框架:降低耦合,提供复用性 部署 灰度上线:按产品需求优先级,抽出核心需求,在满足用户基本要 ...
- Mosquitto简介及搭建
文章钢要: 1.了解Mosquitto服务器 2.在Liunx中搭建Mosquitto服务器 3.设置Mosquitto集群 一.Mosquitto简介 一款实现了消息推送协议 MQTT v3.1 的 ...
- 基于WPF的桌面宠物开发(一) :WPF简介+环境搭建+简单界面
目录 一.WPF简介 1.什么是WPF? 二.WPF环境搭建 1.Visual Studio安装 2.安装 ".Net桌面开发" 工具包 3.新建WPF项目 4.导入WpfAnim ...
- PySpark简介、搭建以及使用
目录 一.PySpark简介 使用场景 结构体系 二.PySpark集成搭建 三. PySpark的使用 PySpark包介绍 PySpark处理数据 PySpark中使用匿名函数 加载本地文件 Py ...
最新文章
- 实例44:python
- java api math_JAVA 函数 Math API
- (20)System Verilog利用clocking块产生输出信号延迟激励
- oracle 11G创建表空间、用户、配置监听和TNS
- LeetCode 73. 矩阵置零(两个标记变量)
- MongoDB的ObjectId生成原理
- 为什么像王者荣耀这样的游戏Server不愿意使用微服务??
- JUC编程入门(高并发)
- 回溯法和树的先序遍历
- 格式化Json字符串工具-HiJson
- wordpress网站添加百度导航地图
- 数据库 “投毒”修复方案
- 27岁了,目前从事软件测试,听说测试前途是IT里最差的,是这样吗?
- 2015 年最热门的国人开发开源软件 TOP 50
- 谷氨酸Glutamate
- 连续状态方程离散化与凸包表示形式
- 【渝粤教育】电大中专计算机职业素养 (3)作业 题库
- 小白入门计算机视觉系列——ReID(一):什么是ReID?如何做ReID?ReID数据集?ReID评测指标?
- 钱包缩水,消费降级,你更需要这款PDF转Word转换器
- 501 5.1.7 Invalid address
热门文章
- 【Android】五种常用布局方式详解(图文+示例)持续更新中...
- postgresql客户端使用
- premiere小tips(参考于干的教程)
- 科密t1消费管理系统_科密A1\T1登录密码获取软件-科密A1\T1登录密码获取工具1.0.0 安卓版-东坡下载...
- properties(属性文件)
- 创新声卡KX驱动安装、调试、使用教程
- 简单实用的下载百度文库文档的方法
- adobe flash builder4.6 安装存在问题,可能未安装某些必需组件
- 股票交易数据接口是什么?
- CoreOS部署及应用