diamond专题(三)—— diamond架构

1、作为一个配置中心,diamond的功能分为发布和订阅两部分。因为diamond存放的是持久数据,这些数据的变化频率不会很高,甚至很低,所以发布采用手工的形式,通过diamond后台管理界面发布;订阅是diamond的核心功能,订阅通过diamond-client的API进行。

2、diamond服务端采用mysql加本地文件的形式存放配置数据。发布数据时,数据先写到mysql,再写到本地文件;订阅数据时,直接获取本地文件,不查询数据库,这样可以最大程度减少对数据库的压力。

3、diamond服务端是一个集群,集群中的每台机器连接同一个mysql,集群之间的数据同步通过两种方式进行,一是每台server定时去mysql dump数据到本地文件,二是某一台server接收发布数据请求,在更新完mysql和本机的本地文件后,发送一个HTTP请求(通知)到集群中的其他几台server,其他server收到通知,去mysql中将刚刚更新的数据dump到本地文件。

4、每一台server前端都有一个nginx,用来做流量控制。

5、图中没有将地址服务器画出,地址服务器是一台有域名的机器,上面运行有一个HTTP server,其中有一个静态文件,存放着diamond服务器的地址列表。客户端启动时,根据自身的域名绑定,连接到地址服务器,取回diamond服务器的地址列表,从中随机选择一台diamond服务器进行连接。

可以看到,整个diamond的架构非常简单,使用的都是最常用的一些技术以及产品,它之所以表现得非常稳定,跟其架构简单是分不开的,当然,稳定的另一个主要原因是它具备一套比较完善的容灾机制,容灾机制将在下一篇文章中讲述。

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

时间: 2024-08-03 07:03:13

diamond专题(三)—— diamond架构的相关文章

Community Server专题三:HttpModule

server 从专题三开始分析Community Server的一些具体的技术实现,根据IIS对请求的处理流程,从HttpModule& HttpHandler切入话题,同时你也可以通过一系列的专题了解CS的运行过程,不只如此,所有的.Net 1.1 构架的Web App都是以同样的顺序执行的. 先了解一下IIS系统.它是一个程序,负责对网站的内容进行管理并且处理对客户的请求做出反应.当用户对一个页面提出请求时,IIS做如下反应(不考虑权限问题): 1.把对方请求的虚拟路径转换成物理路径 2.根

Swift语法专题三——基础运算符

Swift解读专题三--基础运算符 一.引言          运算符是编程语言不可缺少的一个部分,Swift中除了支持C中的运算符外,还提供了一些更加强大的运算符功能,例如取余符%可以用来计算浮点数,另外新增了两种范围运算符.Swift中有3类运算符: 1.一元运算符 运算符作用于一个操作数,可以出现在操作数前或者操作数后. 2.二元运算符 运算符作用于两个操作数,出现在两个操作数中间. 3.三元运算符 运算符作用于三个操作数间. 二.赋值运算符         赋值运算符用=符号表示,用于初

做刀尖上的舞者 京东无线服务端的三次架构演进

除了"双十一"和店庆这种传统的促销日,各大电子商务网站已经不仅仅拘泥于此.京东的超级品牌日.一元秒杀等促销活动最少一周有两次发布,最多每天都有发布,伴随而来的是各种流量的洪峰. 而高频次的发布.流量洪峰对于无线端是一个考验,京东最早的无线端从2011年开始做起,最开始只是一个简单的 Web 应用以及支持它的后台系统,但所谓的"简单"却建立在可扩展的基础之上,这也为无线端三次演进,支撑京东每天几十亿级访问的分布式系统带来了实现可能. 无线端三次架构演进 2011年京东

diamond专题(一)-- 简介和快速使用

大家好,今天开始为大家带来我们通用产品团队的产品 -- diamond的专题,本次为大家介绍diamond的概况和快速使用. 一.概况 diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是简单.可靠.易用,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管理. diamond为应用系统提供了获取配置的服务,应用不仅可以在启动时从diamond获取相关的配置,而且可以在运行中对配置数据的变化进行感知并获取变化后的配置数据. 持久配置是指配置数据会持久化到磁盘和数据库中. di

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

大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解.本次为大家带来的是diamond核心原理的介绍,主要包括server集群的数据同步.client获取server地址.client从server获取数据.client运行时感知server的数据变化,这四部分. 一.server集群数据同步 diamond-server将数据存储在mysql和本地文件中,mysql是一个中心,diamond认为存储在mysql中的数据绝对正确,除此之外,server会将数据存储在本地文件中

基于.NET平台的分层架构实战(三)—架构概要设计

架构基本原则: 这里,将描述一些在这个架构设计中的基本原则,其 中很多都是经典的设计原则,不过针对分层架构的特点,用我自己的语言进行了 描述.其中也有我自己提出的原则. 逐层调用原则及单向调用原则 现在约定将N层架构的各层依次编号为1.2.-.K.-.N -1.N,其中层的编号越大,则越处在上层.那么,我们设计的架构应该满足以下 两个原则: 1.第K(1<K<=N)层只准依赖第K-1层,而不可依赖其他 底层. 2.如果P层依赖Q层,则P的编号一定大于Q. 其中第一个原 则,保证了依赖的逐层性,

Android UI开发专题(三) 各种Drawable

  本次我们主要讲解Android平台下的各种Drawable,这里在SDK的android.graphics.drawable包下面可以看到有各种Drawable类多达十几种,它们到底之间有什么关系和区别呢? 一.AnimationDrawable 顾名思义该类主要表示动画的图形类,可以实现逐帧播放的效果,下面代码示例如下 1. 定义一个cwj_animation.xml 放到res/drawable 目录下,其中定义的属性duration为延时,单位为毫秒,而oneshot属性表示是否仅播放

iOS9系列专题三——应用瘦身

更小,更快--iOS9的App Thinning         apple在iOS9中引入了一套新的app瘦身方案,通过一些优化策略,将尽可能的减小app安装包的体积.这部分的大多工作是由app store来完成,开发者并不需要付出太多额外的开销.这篇博客将这部分内容做了简单的介绍,详细信息在App Thinning.         App的瘦身策略主要包括三部分: 一.slicing         这部分的主要原理是不同的设备下载安装不同的app包,各个app包副本中包含相应尺寸的素材.

急求asp.net+access三册架构来实现的一个论坛程序代码

问题描述 我们是学生,只是拿来做参考,不会侵犯版权问题,谢谢.嗯着急呀,.... 解决方案 解决方案二:51asp.net上去去下载.解决方案三:都不是三层的,反正不是全的,解决方案四:引用2楼houruiyaya的回复: 都不是三层的,反正不是全的, 那你知道什么是全的吗?解决方案五:引用2楼houruiyaya的回复: 都不是三层的,反正不是全的, 我的需要是,回帖,跟帖,短消息,等级,管理员后台,版主后台,举报,禁言,删除,加精,热帖,全局置顶,置顶,申请版主,撤销版主,等等等....做这