diamond专题(二)-- 核心原理介绍

大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解。本次为大家带来的是diamond核心原理的介绍,主要包括server集群的数据同步、client获取server地址、client从server获取数据、client运行时感知server的数据变化,这四部分。

一、server集群数据同步

diamond-server将数据存储在mysql和本地文件中,mysql是一个中心,diamond认为存储在mysql中的数据绝对正确,除此之外,server会将数据存储在本地文件中。

同步数据有两种方式:

(1)server写数据时,先将数据写入mysql,然后写入本地文件,写入完成后发送一个HTTP请求给集群中的其他server,其他server收到请求,从mysql中dump刚刚写入的数据至本地文件。

(2)server启动后会启动一个定时任务,定时从mysql中dump所有数据至本地文件。

二、client获取server地址

diamond-client在使用时没有指定server地址的代码,地址获取对用户是透明的。

server地址存储在一台具有域名的机器上的HTTP server中,我们称它为地址服务器,diamond-client使用前需要在本地进行正确的域名绑定,启动时它会根据域名绑定,去对应环境的地址服务器上获取diamond-server地址列表。

获取的地址列表,会保存在client本地,当出现网络异常,无法从网络获取地址列表时,client会使用本地保存的地址列表。

client启动后会启动一个定时任务,定时从HTTP server上获取地址列表并保存在本地,以保证地址是最新的。

三、client主动获取数据

client调用getAvailableConfigInfomation(), 即可获取一份最新的可用的配置数据,获取过程实际上是拼接http url,使用http-client调用http method的过程。

为了避免短时间内大量的获取数据请求发向server,client端实现了一个带有过期时间的缓存,client将本次获取到的数据保存在缓存中,在过期时间内的所有请求,都返回缓存内的数据,不向server发出请求。

四、client运行中感知数据变化

这是diamond最为核心的一个功能。

这个特性是通过比较client和server的数据的MD5值实现的。

server在启动时,会将所有数据的MD5加载到内存中(MD5根据某算法得出,保证数据内容不同,MD5不同,MD5存储在mysql中),数据更新时,会更新内存中对应的MD5

client在启动并第一次获取数据后,会将数据的MD5保存在内存中,并且在启动时会启动一个定时任务,定时去server检查数据是否变化。每次检查时,client将MD5传给server,server比较传来的MD5和自身内存中的MD5是否相同,如果相同,说明数据没变,返回一个标示数据不变的字符串给client;如果不同,说明数据变了,返回变化数据的dataId和group给client. client收到变化数据的dataId和group,再去server请求一次数据,拿回数据后回调监听器。

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

时间: 2024-09-18 18:29:32

diamond专题(二)-- 核心原理介绍的相关文章

大数据思维的十大核心原理

大数据思维是客观存在,大数据思维是新的思维观.用大数据思维方式思考问题,解决问题是当下企业潮流.大数据思维开启了一次重大的时代转型. 大数据思维原理是什么?笔者概括为10项原理. 一.数据核心原理 从"流程"核心转变为"数据"核心 大数据时代,计算模式也发生了转变,从"流程"核心转变为"数据"核心.Hadoop体系的分布式计算框架已经是"数据"为核心的范式.非结构化数据及分析需求,将改变IT系统的升级方式:

Ajax技术组成与核心原理分析_AJAX相关

本文主要为大家分析了Ajax技术组成原理,供大家参考,具体内容如下 1.Ajax特点:局部刷新.提高用户的体验度,数据从服务器商加载  2.AJax的技术组成不是新技术,而是之前技术的整合 Ajax: Asynchronous Javascript And Xml;(异步的JavaScript和XML) 包括的技术:JavaScript.XML.CSS.XMLHttpRequest 异步:发送请求以后,不等结果,由回调函数处理. JavaScript:向服务器发送请求,获得返回结果,更新页面 X

DBoW2算法原理介绍

DBoW2算法原理介绍 本篇介绍DBoW2算法原理介绍,下篇介绍DBoW2的应用. DBow2算法 DBow2是一种高效的回环检测算法,DBOW2算法的全称为Bags of binary words for fast place recognition in image sequence,使用的特征检测算法为Fast,描述子使用的是brief描述子,(TODO:和DBow的区别在哪里?)是一种离线的方法. 二进制特征(ORB特征):Fast特征点+Brief描述子(Hamming distanc

实现quartz定时器及quartz定时器原理介绍_java

一.核心概念 Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可. 1.Job表示一个工作,要执行的具体内容.此接口中只有一个方法void execute(JobExecutionContext context) 2.JobDetailJobDetail表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略. 3.Trigger代表一个调度参数的配置,什么时候去调. 4.Sched

在Linux中绑定多网卡的原理介绍与实战

一.原理介绍: 1.什么是bonding? Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余: Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作. 2.bonding技术功能作用? bonding主要用于两个方向: a.实现 负载均衡:   通过bonding技术,将网络的业务流量平均分配到不同的

jquery选择器原理介绍

 这篇文章主要介绍了jquery选择器原理介绍($()使用方法),需要的朋友可以参考下 每次申明一个jQuery对象的时候,返回的是jQuery.prototype.init对象,很多人就会不明白,init明明是jQuery.fn的方法啊,实际上这里不是方法,而是init的构造函数,因为js的prototype对象可以实现继承,加上js的对象只是引用不会是拷贝,new jQuery,new jQuery.fn和new jQuery.fn.init的子对象是一样的,只是有没有执行到init的不同.

Swift语法专题二——基本数据类型

Swift解读专题二--基本类型 一.常量和变量         Swift语言的常量和变量在使用之前,必须被定义.常量用于处理程序中只在初始化时设置的量值,之后不能进行赋值改变,变量用于处理程序中可以进行改变的量值.分别用let和var来声明常量和变量,示例如下: var varValue = 1 let letValue = 10 Swift语法也支持在一行中声明多个量值,示例如下: var a=1,b=2.9,c="string" 在声明量值时,编译器会根据第一次赋值的类型来推断

云端-个人开发手机软件如何实现软件内的网络备份资料信息功能,求原理介绍

问题描述 个人开发手机软件如何实现软件内的网络备份资料信息功能,求原理介绍 比如开发一款记事本软件,该软件可以将用户记的东西直接同步到云端,即使手机遗失了在其他手机上下载一个同样的软件点击同步就可以将保存在云端的数据下载下来继续使用.个人开发一款包含这样功能的软件如何才能增加这一功能呢?请问原理是什么,个人设计的软件实现这一功能难度大吗?

AMD:全球首款十二核心处理器已开始出货

AMD今天表示,全球首款十二核心处理器,代号"马尔库尼"(Magny-Cours)的新款Opteron服务器芯片,已经开始出货并取得收入了. AMD公司发言人Phil Hughes说:"从将近三十天前开始我们就在积极向客户提供相当于零售产品的(十二核心处理器)样品了.事实上我们已经出货了数量有限的新产品,以便让客户为本季度晚些时候的如期正式发布做好准备." 马尔库尼将命名为Opteron 6100系列,采用新的Socket G34插槽,主频1.7-2.3GHz不等,