分布式系统的容错性(一)——容错性简介

 

本系列内容是我学习分布式系统容错性的一些笔记,欢迎就相关内容进行讨论。

我的联系方式:DLite@163.com 

=============================================

 

分布式系统设计中的一个重要目标,是以这样的方式构建系统:它可以从部分失效中自动恢复,而且不会严重的影响整体性能。特别是,当故障发生时,分布式系统应该在进行恢复的同时继续以可接受的方式进行操作,也就是说,它应该能容忍错误,在发生错误时某种程度上可以继续操作。

        1、系统容错的一些要求:

        (1)可用性(availability)

        用来描述系统在给定时刻可以正确的工作。

        (2)可靠性(reliability)

        指系统在可以无故障的连续运行。与可用性相反,可靠性是根据时间间隔而不是任何是可以来进行定义的。如果系统在每小时中崩溃1ms,那么他的可用性就超过99.9999%,但是它还是高度不可靠的。与之相反,如果一个系统从来不崩溃,但是要在每年8月中停机两个星期,那么它是高度可靠的,但是它的可用性只有98%。因此,这两种属性并不相同。

        (3)安全性(safety)

        指系统偶然出现故障的情况下能正确操作而不会造成任何灾难。

        (4)可维护性(maintainability)

        发生故障的系统被恢复的难易程度。

        2、故障分类

        故障通常被分为暂时的(transient)、间歇的(intermittent)和持久的(permanent)。

        分布式系统中的典型故障如下表:

故障类型说明
崩溃性故障服务器停机,但是在停机之前工作正常
遗漏性故障
        接受故障
        发送故障
服务器不能响应到来的请求
服务期不能接收到来的消息
服务期不能发送消息
定时故障服务器的响应在指定时间间隔之外
相应故障
        值故障
        状态转换故障
服务期的响应不正确
响应的值错误
服务器偏离了正确的控制流
随意性故障服务器可能在随意的时间产生随意的响应

        其中,随意性故障是最严重的故障,也被称为拜占庭故障。当发生故障时,服务器可能产生它从来没有产生过的输出,但是又不能检测出错误。更坏的情况是,发生故障的服务器恶意的与其他服务器共同工作来产生恶意的错误结果。臭名昭著的Windows系统“蓝屏”,正是为了尽可能避免这种情况而设计的。这种情况也说明了为什么谈到可靠系统时安全被认为是一个重要的需求。

        术语“拜占庭”是指拜占庭帝国,它存在的时间是320到1453年,地点在巴尔干半岛和现在的土耳其,当时在统治阶级中存在着无休止的阴谋诡计和谎言。拜占庭故障的问题由Pease等(1980)和Lamport等(1982)首先进行了分析。关于拜占庭问题,在后续的内容中会详细讨论。

        随意性故障与崩溃性故障紧密相关。崩溃性故障的一个典型的例子就是操作系统崩溃,此时的解决办法只有一个:重新启动。与人们的期望相反,PC机经常遭遇崩溃性故障,最终导致设计者们把复位按钮从机箱背后移到前面。

        3、使用冗余来掩盖故障

         如果系统是容错的,那么它能做的最好的事情就是对其他进程隐藏故障的发生。关键技术是使用冗余来掩盖故障。有三种可能:信息冗余、时间冗余和物理冗余。

        在信息冗余中,添加额外的位可以使错乱的位恢复正常。例如可以在传输的数据中添加一段Hamming码来从传输线路上的噪声中恢复数据。关于利用信息冗余进行错误检测和纠正,将在后续内容中叙述。

       在时间冗余中,执行一个动作,如果需要就再次执行。使用事务就是这种方法的一个例子。如果一个事务中止,那么它就可以无害的重新执行。当错误是临时性或间歇性时,时间冗余特别有用。TCP/IP协议中的重传机制,是另外一个例子。

        在物理冗余中,通过添加额外的装备或进程使系统作为一个整体来容忍部分组件的失效或故障成为可能。物理冗余可以在硬件上也可以在软件上进行。其中,一种著名的设计是TMR(三倍模块冗余,Tiple Modular Redundancy)。在包括TMR的系统中,每个关键模块中的部件都被复制了三份,采用多数表决的方法,确保当某些某块中的单个部件发生故障时,系统还可以正确的运行。

        参考文献:

        Andrew S. Tanenbaum, Maarten van Steen,杨剑锋等译,《分布式系统原理与范型》,2004,清华大学出版社。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值