分层与封装(4) 计算机系统的容错性

    系统的性能并不是唯一指标,尤其是现在,系统的移动性、功耗也成为了都成为了最重要,甚至在手机等移动设备上是超过性能的指标。对于一些极端的设备,性能可能是最次的考察指标,比如飞机上的黑匣子最重要的是稳定性,南极科考站的系统最重要的是低温情况下的运作情况。对于我们一般人而言,最重要的可能是系统的容错性和安全性。

    系统的容错主要是两种方面,一个是数据的容错,这是指系统能够自动纠正可能含有错误的数据;一个是控制的容错,这是指系统在控制出现错误的时候,能够按照正常的方式运行而不会崩溃。要处理这些错误,势必是要付出代价的,或者是通过冗余的方式在发生错误的时候进行恢复,或者增加额外的控制方法来应对系统发生的错误。

    数据通信中,是最常见发生错误的部分。但第一个简单的问题就是,如何知道数据传输发生错误了?
假设从设备A到设备B,发送的信息是XYZ的话:
        设备A知道A发送的是什么
        设备B知道B收到的是什么
        但是设备A不知道B收到的是什么
        设备B不知道A发送的是什么。
虽然像绕口令,但是大概明确了这个问题为什么是个需要解决的问题。一个简单的方法是:
        设备A发送给B之后,
        B返回给A他收到的内容,
        A根据收到的内容来判断是否和发送的内容一致,
        如果一致的话,告诉B这是一致的。
这固然是可以的方法,但是他将同样的内容发送了两次,并且进行了三次数据传递。如果原本一次数据传递发生错误的概率是a%,那么由于一次“被确认的数据传递”需要三次普通的数据传递,这个“被确认的数据传递”的只要其中一次传递发生错误,就会整体的错误,所以不仅数据传输的效率变低了,连数据传输的可靠性也变低了。

另外一种解决方法是,在数据传输的过程中,增加一些信息来校验前面的数据中是否发生了错误。比如最简单的奇偶校验,对于每一个字节的8个bit,计算这个字节中1的数量,奇数个1的话就在后面添上一位校验码1,偶数个1的话就在后面添上一位校验码0。这样做的效果是,传输的数据增加了12.5%,因为每8位数据要添加一位校验;有50%的概率发现错误,因为当偶数个数据位发生错误时,奇偶校验失效(这句话不正确,实际上是奇偶校验码和数据位错误数一致时)。通过设计更好的校验方法,能有更高的纠错能力。

知道是否有错误之后,我们有两个选择,一个是直接丢弃这部分数据,另一个是试图修复这部分数据。如果只考虑根据手中的数据来进行数据纠错,那么必须要使用更多的冗余信息来对数据进行纠错。比如海明码通过对数据的多重校验,来找到具体哪一位发生了错误,当然这会增加更多的数据冗余,并且只有有限的数据修复能力。

对于实时数据传输来说,也许重新请求传输数据是一种更好的方法。如果是数据存储系统,就有更多的选择。比如很多人使用的Ghost镜像,就是在系统发生错误的时候快速恢复系统的冗余,原理很简单,把所有东西都做备份。硬件上可以采用多块硬盘互相备份的方式,来进行数据的回复,比如RAID系统保障了系统内一块或几块硬盘毁坏,数据不会丢失,由于采用了封装的设计,计算机系统对RAID操作就和对于一块硬盘操作的方式一样。
如果从更大的维度上看,类似于Google这样的公司在全球各地设计了数据中心。这就将容错提升到了灾备的级别,即便有一个数据中心因为地震或者各种灾难毁坏了,其他数据中心也会继续工作,用户的数据不会丢失。当然这样的冗余成本也是巨大的。

除了硬件上的容错机制之外,软件上也会有对于操作的容错,比如通过数据库的日志来恢复数据库的数据。此外就是一些软件设计上的容错,比如支付宝在支付的时候需要经过若干步骤,就是为了在错误的下单后能够及早发现和纠正。这些容错的手段,或者是通过冗余的信息使得操作能够恢复到某个时间点,或者是通过冗余的流程来纠正错误的操作。

计算机系统设计容错性的原则实际上依然是依赖于分层与封装。容错机制都是为了让每一层和每一个模块确保自己所存储或者传递的信息是正确的,也基本都是发生在该层或者该模块。比如网络通信中,这些校验码都是在物理传输层面进行的,这样使用这一层的通信层就可以依赖完全正确的物理传输进行传递;这一层会进行相互对话来确保A到B,B到A的通信是畅通的,这样更高的应用层就可以依赖通信层互通的链接来传递更多的数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容