diamond专题(四)—— 容灾机制

转载 2015年07月08日 17:27:48

大家好,本次为大家带来diamond的容灾机制。 diamond之所以表现的稳定可靠,除了架构简单之外,另一个重要原因是diamond具有一套完备的容灾机制,容灾机制涉及到client和server两部分,主要包括以下几个方面:

1、server存储数据的方式。

server存储数据是“数据库 + 本地文件”的方式,集群间的数据同步我们在之前的文章中讲过(请参考专题二的原理部分),client订阅数据时,访问的是本地文件,不查询数据库,这样即使数据库出问题了,仍然不影响client的订阅。

2、server是一个集群。

这是一个基本的容灾机制,集群中的一台server不可用了,client发现后可以自动切换到其他server上进行访问,自动切换在client内部实现。

3、client保存snapshot

client每次从server获取到数据后,都会将数据保存在本地文件系统,diamond称之为snapshot,即数据快照。当client下次启动发现在超时时间内所有server均不可用(可能是网络故障),它会使用snapshot中的数据快照进行启动。

4、client校验MD5

client每次从server获取到数据后,都会进行MD5校验(数据保存在response body,MD5保存在response header),以防止因网络故障造成的数据不完整,MD5校验不通过直接抛出异常。

5、client与server分离

client可以和server完全分离,单独使用,diamond定义了一个“容灾目录”的概念,client在启动时会创建这个目录,每次主动获取数据(即调用getAvailableConfigInfomation()方法),都会优先从“容灾目录”获取数据,如果client按照一个固定的规则,在“容灾目录”下配置了需要的数据,那么client直接获取到数据返回,不再通过网络从diamond-server获取数据。同样的,在每次轮询时,都会优先轮询“容灾目录”,如果发现配置还存在于其中,则不再向server发出轮询请求。 以上的情形, 会持续到“容灾目录”的配置数据被删除为止。

根据以上的容灾机制,我们可以总结一下diamond整个系统完全不可用的条件:

1、数据库不可用。

2、所有server均不可用。

3、client主动删除了snapshot

4、client没有备份配置数据,导致其不能配置“容灾目录”。

同时满足以上4个条件的概率,在生产环境中是极小的。

以上就是diamond的容灾机制,接下来的专题文章会带大家一起探究diamond的实现细节。

相关文章推荐

diamond专题(四)—— 容灾机制

原文地址:http://rdc.taobao.com/team/jm/archives/1617 大家好,本次为大家带来diamond的容灾机制。 diamond之所以表现的稳定可靠,除了架构简...

IOS开发系列——UIView专题之四:事件分发机制篇【整理,部分原创】

4事件分发机制 iOS中的事件大概分为三种,分别是Milti-Touch Events, Motion Events和Remote Control Events(events for contro...

diamond专题(三)—— diamond架构

原文地址:http://rdc.taobao.com/team/jm/archives/1606 大家好,这次为大家带来的是diamond的架构,架构如下图所示: 对该图进行一些说...

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

原文地址:http://rdc.taobao.com/team/jm/archives/1592 大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解。本次为大家带来的是di...

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

大家好,今天开始为大家带来我们通用产品团队的产品 —— diamond的专题,本次为大家介绍diamond的概况和快速使用。 一、概况 diamond是淘宝内部使用的一个管理持久配置的系统,它的特...

Hiberante专题1——Hibernate的并发机制及事务处理

数据库事务的定义 数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)...

阿里中间件——diamond

一、前言        最近工作不忙闲来无事,仔细分析了公司整个项目架构,发现用到了很多阿里巴巴集团开源的框架,今天要介绍的是中间件diamond,访问了对应开发团队的博客(http://jm-blo...

TDDL+DIAMOND的配置及使用(四):TDDL整合spring

TDDL与spring的整合比较简单,只要tddl接管spring的数据源datasource即可            (1)添加依赖 com.taobao.tddl tdd...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:diamond专题(四)—— 容灾机制
举报原因:
原因补充:

(最多只允许输入30个字)