阿里巴巴是个快乐的青年
分类: 高性能计算
2013-02-20 11:36:14
一、Quorum容错概述
所谓容错技术就是允许系统内部有故障存在,在冗余设计的基础上,系统最终仍能可靠地运行。Quorum就是一种容错技术,在亚马逊的中对此就有很好的体现。Quorum系统是一种以冗余设计为基础的集合系统,其结构如下图所示:
图1 Quorum系统结构图
每个quorum由多个节点构成(一般是3个,Dynamo默认就是3个),quorum内节点之间通过互相通信和数据复制来保持数据操作的一致性。同时,各个quorum之间又通过相交节点来把各自quorum内部的数据复制到其它quorum的所有节点。
各种quorum系统容错技术的主要区别在于组织方式、拓扑结构、执行协议的不同,以及由此带来的性能和应用领域的差异。容错执行协议主要分为两大类:选举协议和互斥协议。当某些节点发生故障或者错误时,通过选举协议,从含有故障节点quorum的有效节点中选举出有效数据,或者采用互斥协议,从不含故障或者错误节点的有效quorum的节点中获得有效数据,系统仍能可靠运行。
二、容错执行协议
选举协议:
选举协议允许写quorum中节点含有数据不同和读quorum中节点含有数据丢失或者不一致的错误或者故障,但是只要当前quorum有效节点所包含正确数据信息足够多,客户端任然能从quorum的返回数据中获取有效数据。
客户端根据返回数据的时间戳来将最新时间戳的数据作为可靠数据选择样本,当所有返回数据值相等且超过quorum规模的一半,就认为数据有效,否则认为数据无效。
如果整个系统都没有有效读quorum,则系统失效。
互斥协议:
读操作:从其它有效quorum中获取有效数据,如果整个系统都没有有效读quorum,则系统失效。
写操作:如果对同一数据进行写操作,则时间戳早或者优先权高的优先操作;如果对不同数据进行写操作且数据之间存在同步关系,则时间戳早或者优先权高的优先操作,否则如果无同步关系,则先到者先操作。
三、Quorum系统分类
根据容错执行协议的不同,可以将Quorum系统分为两类:
1、从含有故障节点的quorum中获取有效数据
采用选举协议,典型的代表如:Byzantine Quorum系统。
2、从不含任何故障节点的quorum中获取有效数据
采用互斥协议,典型的代表如:Crumbling Wall Quorum系统、Grid Quorum系统、Tree Quorum系统、Diamond Quorum系统等。
四、Quorum系统性能特征
衡量Quorum系统性能特征的指标只要分为2部分:
1、基本性能特征
基本性能特征是衡量和对比Quorum系统好坏的基本判断依据,主要包括
(1)规模(size)
规模即quorum中节点数量,数量越大则节点间通信成本越高,同步时长越长,反之,数量越小则冗余量越小,含有有效数据的节点比例也越低。
规模是把双刃剑,如何选择是种艺术,一般选择3个节点,比如前面提到的Dynamo。
(2)可用性(availability)
可用性即节点出错时系统仍能可靠运行的概率,也即系统中存在至少一个有效quorum的概率,该值越大则系统可用性越高,容错性能也越好。
由于衡量可用性的标准是剩余有效节点组成有效quorum的组合概率,因此其与系统拓扑结构有很大关系。
(3)负载(load)
负载即Quorum系统中最小quorum的最忙节点的最小访问概率。quorum越小则其内部节点参与quorum之间相交的概率越大,最小quorum中参与quorum之间相交最多的节点即为最忙节点,该节点被访问的最小概率可作为整个系统所有节点被访问的最小概率上限,该值越大则利用率越高,同时也要求最忙节点的可靠性也就越高,因此,负责也是把双刃剑。
2、其它性能特征
其它性能特征是针对不同Quorum系统为解决特殊问题而引入的评价标准,主要包括:
(1)最大失效节点个数b
即Quorum系统有效运行的最大失效节点数,典型的是Byzantine Quorum系统在满足可用性的前提下所能容忍失效节点的最大数量,b越大则容错性越好,同时最小quorum内部节点的可靠性也要求越高。
(2)读容量(read-capability)
即Quorum系统最大可并行进行读操作且不相交读quorum的个数。在系统总节点数固定的情况下,读容量越大则系统提供并行数据服务的能力越高,同时读quorum规模越小,单个读quorum可用性也越低。
双刃剑啊双刃剑,架构师们好好耍一下你的独孤九剑吧,不要太贱喔。
后记,同志们也可以参看这篇文章《》。