第17章 · 播客 第2集
系统的可靠性分析与设计 · 软件容错与冗余类型
🎙️ 本集播客:第2集:从容错、自检、冗余四大类讲起,双机热备份的「心跳」与三种工作模式、服务器集群逐一辨析;再上重头戏硬件冗余——三模冗余 TMR 的多数表决器与 0.9 模块代入演算、NMR 推广,最后是信息冗余:海明码 Richard Hamming 1950 年与 CRC 生成多项式,以及冷热备份的静态动态转储。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
明
阿明
师姐,串联并联我总算算顺了,可这章后半全是「容错」「冗余」这种概念,一个公式都没有,我到底背哪个?
雅
小雅
先把原文这句想通:容错技术是保证系统在某些组成部分出现故障或差错时仍能正常工作的技术。原文把系统故障分两类:「致命的」不可能自行修复,如主要部件全部损坏;局部的可能被修复。容错技术正是用于构造一种能够自动排除非致命性故障的系统,即容错系统——考「容错对付哪类故障」,答局部的、可修复的。
明
阿明
那具体怎么「容」?总得有个抓手。
雅
小雅
抓手是系统配置。原文说,通常根据不同的系统配置方法而采用相应容错技术,共三种:单机容错技术、双机热备份技术和服务器集群技术。第一节单机容错:提高系统工作可靠性的方法主要有自检技术和冗余技术。自检指系统在发生非致命性故障时能自动发现故障和确定故障的性质、部位,并自动采取措施更换和隔离产生故障的部件;它需采用诊断技术实现。容错系统的实现要求系统必须具有重复部件或备份部件,因此自检技术常配合冗余技术使用——自检负责发现和隔离,冗余负责顶上。
明
阿明
自检负责发现,冗余负责顶上。那冗余有几路?
雅
小雅
原文按「加的是什么」分四类:硬件冗余,增加硬件;软件冗余,增加程序,例如同时采用不同算法或不同人编制的程序;时间冗余,如指令重复执行、程序重复执行;信息冗余,如增加数据位。17.6 节又强调:资源冗余就这硬件、信息、时间、软件四种形式,两处口径一致。
明
阿明
四类记住了。重复线路和备份线路我老混。
雅
小雅
重复线路指用多个相同品种和规格的元件或构件并联起来当作一个用,只要有一个不出故障系统就能正常工作;备份线路的差别在于参加备份的构件并不接入系统,工作构件发生故障后才把输入和输出接到备份构件上来,同时切断故障构件的输入输出。一个「平时就一起干」,一个「出事才接班」。冗余份数:危及人身安全的关键部位大多采用双重冗余,也有三重、四重甚至五重冗余的。
明
阿明
第二节双机热备份,热备、互备、双工仨名字先把我绕晕了。
雅
小雅
用原文一锤定音。双机热备份技术是一种软硬件结合的较高容错应用方案,由两台服务器系统、一个外接共享磁盘阵列柜及相应的双机热备份软件组成;阵列柜也可以没有,改在各自服务器中采取 RAID 卡,RAID 即独立冗余磁盘阵列。用户数据存放在共享磁盘阵列中,一台服务器故障时备机主动替代主机,保证网络服务不间断。
雅
小雅
本节第一个必背词:心跳。双机热备份系统采用「心跳」方法保证主系统与备用系统的联系——所谓「心跳」,指的是主、从系统之间相互按照一定的时间间隔发送通信信号,表明各自系统当前的运行状态;一旦心跳表明主机故障或备用收不到心跳,高可用软件立即将系统资源转移到备用系统上。练习第6题考这个机制名,四个选项心跳、轮询、握手、同步,「按一定时间间隔发送通信信号表明运行状态」这句原话只属于心跳。
明
阿明
轮询是主动挨个查询,握手是建连接时确认就绪,同步是保持双方状态一致……都不是「定期报平安」。
雅
小雅
对。三种工作模式,抓「谁在干活」这根线。第一种双机热备模式,即通常所说的 active/standby 方式:active 处于工作状态,standby 处于监控准备状态,服务器数据包括数据库数据同时往两台或多台服务器写入保证即时同步,active 故障时通过软件诊测或手工方式将 standby 机器激活。练习第7题题干说「主机工作、备机监控准备」,问是哪种模式,答案就是双机热备模式。典型应用是证券资金或行情服务器;缺点是备机长期后备,浪费一部分计算资源。
雅
小雅
第二种双机互备模式:两个相对独立的应用在两台机器同时运行,但彼此均设为备机,某一台故障时另一台在短时间内接管它的应用。第三种双机双工模式:这是集群的一种形式,两台服务器均处于活动状态,同时运行相同的应用,也实现了负载均衡和互为备份,Web、FTP 服务器常用。第7题的「集群模式」干扰项这样排除:集群指一组相互独立的服务器在网络中组合成为单一的系统工作,至少二台、共享数据存储空间,节点故障时应用在另一节点上被自动接管——集群是多台组网当单一系统,不是两台的主备分工。
明
阿明
我串一下:热备一主一备、互备两个应用互相顶、双工两台同跑一个应用。17.6 节开头的「掩蔽」和「重组」什么关系?
雅
小雅
原文:防止故障造成系统失效的两种技术是故障掩蔽技术和系统重组技术。故障掩蔽技术是指防止故障造成差错的各种技术,系统重组技术是防止差错导致系统失效的各种技术——链条是故障导致差错、差错导致失效,掩蔽卡在第一环,重组卡在第二环。这两条是达到容错的两种基本途径,又建立在资源冗余的基础上。
明
阿明
硬件冗余的重头戏,就是三模冗余 TMR 了吧?细节我说不上来。
雅
小雅
对,硬件冗余最常用的就是三模冗余,全称 Triple Modular Redundancy。原文:三个相同的模块接收三个相同的输入,产生的三个结果送至多数表决器,表决器的输出取决于三个输入的多数;若有一个故障模块,则另两个正常模块的输出可将故障模块的输出掩蔽,从而不在表决器输出产生差错。练习第10题考多数表决器的作用,答案是「取三个模块输出的多数作为输出,掩蔽单个故障模块」;「检测模块故障并报警」是拿自检的概念来钓——表决器把故障直接盖住,系统不需要知道哪个模块坏了,「掩蔽」对「检测」一字之差就是答案。负载均衡是双机双工的事,「修复失效的模块」也不沾边。
明
阿明
掩蔽不是检测,也不是修复。那 TMR 的可靠度怎么算?
雅
小雅
TMR 等价于「三取二」:系统可靠度等于 Rm 的 3 次方,加 3 乘 Rm 的平方乘 1 减 Rm——第一项三个全好,第二项恰好坏一个、有三种选法所以乘 3;Rm 和 Rv 分别表示模块和表决器的可靠度,假设各模块可靠度相同。代入演算,设每个模块可靠度 0.9:第一步,三个全好,0.9 的 3 次方等于 0.729。
雅
小雅
第二步,恰好坏一个,Rm 平方 0.81 乘失效概率 0.1 等于 0.081,乘 3 得 0.243。第三步相加,0.729 加 0.243 等于 0.972。单个模块 0.9,三模冗余 0.972,这就是冗余的收益;但它低于三并联的 0.999——坏两个模块系统就失效,表决器自己也可能坏。
明
阿明
表决器自己坏了怎么破?这不就成了单点?
雅
小雅
原文专门交代:为了能够容忍表决器的故障,可以对表决器也采用 3 倍冗余;一般说来,对于一个由若干模块构成的系统,可以对每个模块分别实施 TMR 技术。还说了修复的价值:在无修复的屏蔽冗余系统中,屏蔽冗余因模块故障耗尽时,再发生模块故障将导致输出的错误;假若模块具有修复能力,可靠性将大大提高——带修复的 TMR 用马尔柯夫模型算,方向记住「修复让 TMR 更可靠」就行。
明
阿明
那 NMR 呢?名字里带个 N,是随便取几个模块都行吗?
雅
小雅
不行,原文把话说死了:TMR 的推广是 N 模冗余,N-Modular Redundancy,与三模冗余原理相同,但采用 N 个相同的模块,N 大于 3,且 N 为奇数,以方便进行多数表决。两个条件缺一不可——偶数可能打成平票,四模块两票对两票没法裁决。题目问 N 的取值,「任意整数」或「大于 3 的偶数」直接排除。
明
阿明
大于 3 且为奇数。信息冗余就是加校验位那种吧?
雅
小雅
对,原文定义:信息冗余是指通过在数据中附加冗余的信息以达到故障检测、故障掩蔽或容错的目的,应用最广泛的是海明校验码、奇偶校验码。海明码先钉个纯记忆点,第11题就考它:海明校验码是由 Richard Hamming 于 1950 年提出的。三个干扰项全是本章出现过的真专家——Nelson 1973 对数据模型、Mills 1972 对故障植入模型、Shooman 对时间模型——出题人把年份挪来配错对。防御法是把四个名字各挂自家模型,Hamming 挂海明码 1950,别人来串门就抓。
明
阿明
那海明码本身的能力和原理呢?
雅
小雅
能力一句话:只要增加少数几个校验位,就能检测出二位同时出错,亦能检测出一位出错并能自动恢复该出错位的正确值,后者称为自动纠错——量词「检测二位、纠正一位」。原理:在 k 个数据位之外加上 r 个校验位,形成 k 加 r 位的新码字,使码距比较均匀地拉大;每一位数据分配在几个不同的偶校验位组合中,某位出错会引起相关几个校验位变化,能发现出错还能指出是哪一位。纠错靠重叠奇偶校验:原始数据位分成若干个重叠的组,每组设一位奇偶校验位,每位数据从属的组不完全相同,根据哪些组出错就能唯一确定错位,将该位取反就完成了纠错。
明
阿明
取反就纠完,简单粗暴。还有个 CRC 循环冗余校验码呢?
雅
小雅
同属信息冗余,CRC 也广泛应用于移动通信和磁盘数据存储中。原理:在 K 位信息码后再添加 R 位的校验码,整个编码长度为 N 位,因此又称 N,K 码;存在一个最高次幂为 N 减 K 等于 R 的多项式 G(x),根据 G(x) 可以生成 R 位的校验码,G(x) 叫作这个 CRC 码的生成多项式。生成四步:把 G(x) 转换成 R 加 1 位二进制数;将信息码左移 R 位;用生成多项式对信息码做模 2 除,得到 R 位的余数;将余数拼到左移后空出的位置。一句话:左移、模 2 除、取余数、拼上去。
明
阿明
最后一节备份与恢复,练习第12题那个冷备份热备份的坑在哪儿?
雅
小雅
先铺两个词。数据备份最常用的技术是数据转储和建立日志文件。静态转储指系统中无事务时进行的转储;动态转储指转储与用户事务并发进行、不影响事务运行,但不能保证副本中的数据正确有效。第12题四个选项全是张冠李戴:说「脱机备份即热备份」错,脱机是冷备份;说「联机备份即冷备份」错,联机是热备份;说「联机备份不能实现时间点恢复」也错。
雅
小雅
正确的一项说:脱机备份是静态转储,备份所有物理文件——控制文件、数据文件、重做日志和归档日志——和初始化文件,恢复步骤最少,它比热备份快并且出错机会少。联机备份也叫热备份,是动态转储技术,只备份所需的文件被看作部分备份,在系统运行时执行,优点是可以实现完全的时间点恢复,缺点是比较复杂,需要对系统核心有深刻认识。
明
阿明
冷对静态、热对动态,热备份才能完全时间点恢复,第12题我稳了。
雅
小雅
本集必背清单。一,容错对付非致命、可修复的故障;自检发现、定位、更换、隔离,配合冗余使用。二,冗余四类看「加的是什么」:硬件加硬件、软件加程序、时间重复执行、信息加数据位;重复线路平时一起干、备份线路出事才接班;关键部位大多双重冗余。三,心跳:主从系统按一定时间间隔发送通信信号表明运行状态,第6题选心跳。四,三种模式:热备 active/standby 一主一备、互备两个应用互为备机、双工两台同跑一个应用带负载均衡。
雅
小雅
五,TMR 三取二:Rm 立方加 3 倍 Rm 平方乘 1 减 Rm,0.9 模块得 0.729 加 0.243 等于 0.972;表决器是掩蔽不是检测修复;NMR 要求 N 大于 3 且为奇数。六,海明码 Richard Hamming 1950 年,检测二位纠一位;CRC 用生成多项式模 2 除取余。七,备份:冷对静态、快且出错少,热对动态、能完全时间点恢复。
明
阿明
冷热备份这组对应我记牢了。下一集讲什么?
雅
小雅
下一集接着讲硬件冗余的重头戏——三模冗余 TMR 和提高系统可靠性的措施,故障模型的辨析我放在最后一集跟全章必背一起收。