查看文章 |
云计算系统的容错和故障恢复(2)
在前一篇文章中,我谈到了云计算采用了数据多个副本(缺省是3),除了应对各种软件硬件故障外,多个副本还提高了云计算系统数据读服务能力:每个副本都可以独立提供读服务,由于多个副本通常分布在不同的网络交换机上,因此网络带宽得到更充分的利用。与此同时,多个副本增加了数据写入的成本:写入数据时要同时在多台机器上写入,占用了更多的磁盘空间,传输数据要跨多个网络交换机。由于通常情况下数据的读出次数远多于写入次数,这样获得了更好的整体性能。
一个问题是:为什么缺省用3个数据副本而不是2个或4个?让我们用一个非常简化的模型来分析使用3个副本时数据的可靠性如何,或者说,数据丢失的可能性有多大。为了简单起见,让我们把问题局限在节点计算机上,假设总共有N个节点计算机,它们的平均无故障时间都是M,云计算系统对一个数据副本丢失并进行复制的时间为T,则一台计算机在T时间内出故障的概率是T/M,不出故障的概率是(1-T/M): N台机器在该时间内都不出故障的概率是(1-T/M)的N次方; N台机器在该时间内恰好有1台出故障的概率是:(1-T/M)的(N-1)次方*T/M*N; N台机器在该时间内恰好有2台出故障的概率是: (1-T/M)的(N-2)次方*T/M*T/M*N*(N-1)/(2*1) 因此,N台机器在该时间段内至少有两台机器故障的概率是: P2(N, M, T)=1-都不出故障的概率-恰好1台出故障的概率 因此,N台机器在该时间段内至少有两台机器故障的概率是: P3(N, M, T)=1-都不出故障的概率-恰好1台出故障的概率--恰好2台出故障的概率 因此假如N=1000,M=50,000小时,T=600秒,则 P2 (N=10台,M=50,000小时,T=600秒) = 5.0*10的-10次方; P2 (N=1000台,M=50,000小时,T=600秒) = 6.1*10的-9次方; P2 (N=5000台,M=50,000小时,T=600秒) = 1.4*10的-4次方;
P3 (N=10台,M=50,000小时,T=600秒) = 4.5*10的-15次方; P3 (N=1000台,M=50,000小时,T=600秒) = 6.2*10的-9次方; P3 (N=5000台,M=50,000小时,T=600秒) = 7.6*10的-7次方; 可以看出,当机器数量达到5000台时,至少3台机器出故障的概率低于百万分之一,而至少两台机器出故障的概率高于万分之一。因此采用3个数据副本时数据有比较高的可靠性。
当机器数量较小时,例如10台时,至少两台机器出故障的概率也是很低的,但是,如果采用2个副本,则当一台机器出现故障时,则该机器上保存的数据都变成单副本,因此云计算系统需要马上做出反应,复制这些数据以避免再有一台机器故障时导致的数据丢失。假如该计算机上保存了1TB数据,则即使剩下9台机器每秒复制50MB数据,则仍然需要1TB/(9*50MB),约2230秒的时间,这将使得系统在较长时间内对外服务性能有明显下降。因此2个副本很少使用。
阳振坤 (yangzhenkun@gmail.com)
下一篇:云计算系统的检查点和快照。 |

