博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
diamond专题(四)—— 容灾机制
阅读量:5899 次
发布时间:2019-06-19

本文共 1105 字,大约阅读时间需要 3 分钟。

大家好,本次为大家带来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的实现细节。

转载地址:http://dchsx.baihongyu.com/

你可能感兴趣的文章
MyBatis小问题-Mapper中错误No constructor found...
查看>>
Linux内核(14) - 二分法与printk
查看>>
基金常识
查看>>
从汇编角度来理解linux下多层函数调用堆栈运行状态
查看>>
Sqlite - constraint failed[0x1555]: UNIQUE constraint failed
查看>>
【Tomcat】Tomcat下设置项目为默认项目
查看>>
Java Socket编程
查看>>
轻量却超强——推荐几款好用的截图工具
查看>>
深度解析!短视频如何成为现象级产品
查看>>
cocos2dx 实现文字的一键复制功能(IOS、Android)
查看>>
Java基础-StringBuffer类与StringBuilder类简介
查看>>
libcmt.lib和msvcrt.lib冲突,原因和解决方法
查看>>
layui实现类似于bootstrap的模态框功能
查看>>
微信小程序如何玩转分销
查看>>
英特尔® Software Guard Extensions 教程系列:第一部分,英特尔® SGX 基础
查看>>
wtf_1234
查看>>
ffmpeg+nginx+video实现rtsp流转hls流,通过H5查看监控视频
查看>>
js进阶 9-9 html控件如何实现回车键切换焦点
查看>>
Distributed processing
查看>>
Linux环境变量加载顺序
查看>>