系统可靠性分析与设计

Posted 左直拳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统可靠性分析与设计相关的知识,希望对你有一定的参考价值。

系统可靠性指系统不出故障的能力;可用性指系统出故障后是否能很快恢复服务的能力。

系统可靠性是系统分析、设计和实施过程中采用一定的技术措施才能获得的。可靠性分析与设计的重要内容是建立可靠性模型,以及可靠性指标的预计与分配。在系统分析与设计过程中,我们要反复地进行可靠性预计和分配,并不断深化,以选择合适的方案,预测系统可靠性水平,找出薄弱环节,逐步地将可靠性指标分配到系统各个层次中。这是一个迭代的过程。

一、系统可靠性概述

系统可靠性包括4个子特性:
1)成熟性
是指系统避免因错误的发生而导致失效的能力

2)容错性
系统发生故障或违反指定接口的情况下,系统维持规定的性能级别的能力

3)易恢复性
系统发生失效的情况下,重建规定的性能级别并恢复受直接影响的数据的能力

4)可靠性的依从性
系统依附于与可靠性相关的标准、约定或规定的能力

1、系统故障模型
一般来说,故障模型建立的级别越低,进行故障处理的代价也就越低,但故障模型覆盖的故障也就越少。级别由低到高:

【逻辑级的故障】
硬件逻辑出现的故障

【数据结构级的故障】

【软件故障和软件差错】
软件故障指软件设计与设计说明不一致。软件故障只与设计有关。
软件故障在数据结构或程序输出中的表现称为软件差错。

【系统级的故障】
系统输出与系统设计说明不一致。

2、系统可靠性指标
1)平均无故障时间
MTTF(Mean Time To Failure)

2)平均故障修复时间
MTTR

3)平均故障间隔时间
MTBF=MTTF + MTTR

4)系统可用性
系统可用性是指在某个时间点上系统能够按照需求执行的概率。

可用性 = MTTF/(MTTF + MTTR) * 100%

3、系统可靠性模型
【时间模型】
时间模型基于一个假设:系统中的故障数目在某一时刻为常数。随着故障被纠正,故障数目逐渐减少。在此假设下,经过一段时间调试后剩余故障的数目可用公式估算。

【故障植入模型】
以系统中的错误数作为衡量可靠性的标准。

【数据模型】
系统n次连续运行中系统完成指定任务的概率。

二、系统可靠性分析

计算机系统十分复杂,影响可靠性的因素很多,很难直接进行可靠性分析。但是,通过建立适当的数学模型,把大系统分割成若干子系统,可以简化分析过程。其中,分析组合模型是分析系统可靠性最常用的方法。

1、串联系统

系统可靠度

R = R1 * R2 * ... * Rn

2、并联系统

R = 1 - (1 - R1) * (1 - R2) *...*(1 - Rn) 

3、模冗余系统

串并联混合。

三、冗余技术

提高系统可靠性的技术可以分为避错(排错)技术和容错技术。

【避错】
通过技术评审、系统测试和正确性证明等技术,在系统正式运行之前避免、发现和改正错误。

【容错】
指系统在运行过程中发生一定的硬件故障或软件错误时,仍能保持正常工作而不影响正确结果的一种性能或措施。容错技术主要采用冗余方法来消除故障的影响。

1、冗余技术的分类
1)结构冗余
静态冗余、动态冗余、混合冗余

【静态冗余】
又叫屏蔽冗余或被动冗余,常用的有三模冗余和多模冗余。静态冗余通过表决和比较来屏蔽错误。

【动态冗余】
又称为主动冗余。通过故障检测、故障定位及故障恢复等手段达到容错目的。主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行。各备用模块在待机时,可与主模块一起工作(热备份系统、双重系统),也可不工作(冷备份系统、双工系统、双份系统)。

【混合冗余】
先使用静态冗余中的故障屏蔽技术,使系统免受某些可以被屏蔽的故障的影响;而对那些无法屏蔽的故障,则采用主动冗余中的故障检测、故障定位和故障恢复等技术,并且对系统可以作重新配置。

2)信息冗余
在实现正常功能所需要的信息外,再添加一些信息,以保证运行结果正确性的方法。如检错码、纠错码。

信息冗余的主要任务在于研究出一套理想的编码和译码技术来提高信息冗余的效率。目前应用最广泛的是奇偶校验码、海明校验码和循环冗余校验码。

3)时间冗余
以时间(即降低系统运行速度)为代价以减少硬件冗余和信息冗余的开销,来达到提高可靠性的目的。

实现时间冗余的基本思想是重复执行,然后将每次结果存放起来比较。但这种方法只能检测瞬时性故障而不宜检测永久性的故障。

4)冗余附加
是指为实现上述冗余技术所需的资源和技术,包括程序、指令、数据,以及存放和调用它们的空间等。

2、冗余系统
1)故障检测
2)故障屏蔽
3)故障限制
4)复执
5)故障诊断
6)系统重配置
7)系统恢复
8)系统重新启动
9)修复
10)系统重组合

四、软件容错技术

软件容错的基本思想是从硬件容错中引申而来,利用软件设计的冗余和多样化来达到屏蔽错误的影响,提高系统可靠性的目的。软件容错的主要方法是提供足够的冗余信息和算法程序,使系统在实际运行时能够及时发现程序设计错误,采取补救措施,以提高系统可靠性,保证整个系统的正常运行。

软件容错技术主要有N版本程序设计、恢复块方法和防卫式程序设计等;也可以从计算机平台环境、软件工程和构造异常处理模块等不同方面达到;还可以利用高级语言本身的容错特性,如try catch语句。

1、N版本程序设计
一种静态的故障屏蔽技术,采用前向恢复的策略。设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N个版本的程序必须由不同的人(小组)独立设计,使用不同的方法、不同的设计语言、不同的开发环境和工具来实现,目的是减少N个版本的程序在表决点上出错的概率。

2、恢复块方法

恢复块方法提供具有相同功能的主块和几个后备块,一个块就是一个执行完整的程序段,主块首先投入运行,结束后进行验证测试,如果没有通过验证测试,系统恢复现场后由后备块1运行,结束后同样进行验证测试,不行到后备块2,重复这一过程,直到所有后备块耗尽,或某个故障超出预期,导致无法恢复。

程序设计时,应保证实现主块和后备块之间的独立性,避免错误相互影响。

3、防卫式程序设计
N版本程序设计和恢复块方法都是基于设计冗余的思想,增加了许多额外的工作,结构本身也会带来一些问题和困难。

防卫式程序设计的基本思想是通过在程序包含错误检查代码和错误恢复代码,一旦发生错误,程序就能撤销错误状态,恢复到一个已知的正确状态中去。实现策略包括错误检测、破坏估计和错误恢复三个方面。

五、双机容错技术

双机容错技术是一种软硬件结合的容错应用方案。该方案由两台服务器和一个外接共享磁盘阵列及相应的双机软件组成。

两台服务器互为主从关系。每台服务器至少2块网卡,一块连网,一块连对方,侦测对方的工作状态,同时又与共享磁盘阵列相连。采用心跳方法保证主系统与备用系统的联系。

两台服务器的工作方式,可以有双机热备模式、双机互备模式和双机双工模式。
【双机热备】
一台作为主机工作,一台备用。主机故障,则激活备用机。应用较多,但有点浪费。

【双机互备】两台服务器均处于工作状态,为客户机提供不同的服务,并互相检测对方的运行情况,一台出现故障,另一台则接管。

【双机双工】集群工作模式,两台服务器都处于工作状态,并提供相同的服务。

六、集群技术

集群技术就是将多台计算机组织起来协同工作。它是提高系统可用性和可靠性的一种技术。在集群系统中,每台计算机均承担部分计算任务和容错任务,当其中一台出现故障时,系统采用集群软件将其剔除隔离,负载转嫁给其他计算机,同时向系统管理员发出警报。这样通过功能整合和故障过渡,集群系统实现了系统的高可用性和可靠性。

1、集群技术概述
集群技术是将同构或异构的计算机用集群软件连接在一起,组成一个高度透明的大型计算机群,其中单个的计算机系统称为节点(node)。集群系统作为一个整体为用户服务,用户不必关心服务来自哪台计算机,只需关心服务是否能连续工作。集群系统可以协调管理各节点出现的错误和故障,并可透明地向集群中加入新节点。

1)集群系统的特点
可伸缩性
高可用性
可管理性:集群系统能够管理大规模和物理分散的节点。
高性价比:最少的投资获得最大的性能。
高透明性

2)资源管理与调度
集群系统的主要目标是通过网络互连实现全系统范围内的资源共享,从而提高资源利用率,获得高性能。集群系统进行任务调度的主要方法是进程迁移技术。

3)集群的分类
高性能计算集群
负载均衡集群
高可用性集群

实际应用中,这三种基本类型经常会发生混合与交杂。所以,集群类别的划分是一个相对的概念,而不是绝对的。

2、高性能计算集群

高性能计算集群是指以提高科学计算能力为目的计算机集群技术,它是一种并行计算集群的实现方法。并行计算是指将一个应用程序分割成多块可以并行执行的部分,并指定到多个处理器上执行的方法。

高性能计算集群系统是利用高速互连网络将一组PC(或工作站)连接起来,在并行程序设计和集成开发环境支持下,统一调度和协调处理,实现高效并行处理的系统。特点是
1)系统开发周期短
2)用户投资风险小(节点都是很便宜的PC或工作站)
3)系统价格低
4)节约系统资源
5)扩展性好
6)用户编程方便

高性能计算集群系统中,节点的处理能力参差不齐,当整个系统任务较多时,各节点上的负载可能产生不均衡现象,就会降低这个系统的利用率。这就是负载不平衡问题。负载不平衡问题解决得好坏,直接影响到并行计算的性能。

3、负载均衡集群

许多基于WEB的大型系统功每秒钟需要处理上百万各甚至更多的请求,单台服务器有限的性能难以应付。解决这个问题,采用高性能主机,比如小型机或大型机的话,一来价格昂贵,可扩展性差,很多情况下也不能同时处理上百万并发请求。因为高速主机系统只是对于复杂大衣任务和有限并发处理显得高性能,而互联网中的Web应用大多数处理是简单任务、高强度并发处理,因此,即使投入大量资金,采购高性能、高价格的主机,也满足不了WEB应用的需要。

一种方案是采用集群技术,利用多台计算机实现负载均衡集群。

负载均衡是指处理节点的负载信息通过某代理软件传递给均衡器,由均衡器做出决策并对负载进行动态分配,从而使集群中各处理节点的负载相对趋于平衡。

负载均衡的分类
根据负载均衡的位置不同,可以分为客户端负载均衡和服务器端负载均衡;

按照负载均衡所在层次不同,可以分为应用层负载均衡、传输层负载均衡、网络层负载均衡和数据链路层负载均衡。

客户端负载均衡是指客户端的均衡器根据集群的负载情况,主动选择由集群中哪台计算机为其服务。

服务器端负载均衡又可分为集中式负载均衡和分布式负载均衡。集中式负载均衡的均衡器位于集群中一台计算机上,而分布式负载均衡有多个均衡器,位于集群中不同的计算机。集中式负载均衡实现简单,但可扩展性不强,安全性较差,有单点故障隐患,实现不够灵活,比较难配置不同的均衡策略。

数据链路层负载均衡根据数据的目的MAC地址选择不同的路径;

网络层负载均衡利用基于IP地址的分配方式将数据流疏通到多个节点;

传输层和应用层的交换技术,本身就是一种基于访问流量的控制方式,以此可以实现负载均衡。

4、高可用性集群
高可用性集群是一种以减少服务中断时间为目标的计算机集群技术,可以提供7*24小时昼夜不停的可靠保证,确保系统不停息地运转。

在高可用性集群系统中,多台计算机一起工作,各自运行一个或几个服务,各为服务定义一个或多台备用计算机。当某台计算机出现故障时,备用计算机便立即接管该故障计算机的应用,继续为前端的用户提供服务。如果只有2台计算机组成高可用性集群,则相当于双机双工方式。

5、负载均衡技术
集群的最大特征是多个节点的并行和共同工作,如何让所有节点承受的负荷平均,不出现局部过大负载或过轻负载的情况,是负载均衡的重要目的。如果局部过大,必然导致硬件承压,老化和损坏的概率增加;局部过轻,设备资源浪费,不符合成本最低原则。

负载均衡有两方面的含义。首先,大量的并发访问或数据流量分担到多个节点上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多个节点上做并行处理,每个节点处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅提升。
1)调度算法
轮转、加权、最小连接数、哈希、随机等等。

2)技术实现
(1)基于特定软件的负载均衡

(2)基于DNS的负载均衡
DNS服务器中为同一个域名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询按记录的IP顺序返回不同的解析结果,将客户端的访问引导到不同节点,使得不同的客户端访问不同的节点,从而达到负载均衡的目的。

DNS负载均衡的优点是经济、简单易行,并且节点可以位于互联网上的任意位置。但DNS需要经常刷新,容易造成额外的网络流量;DNS修改后不会立即生效;DNS负载均衡采用的是简单的轮转算法,不能区分节点之间的差异,不能反映节点的当前运行状态。另外,每个节点需要对应一个IP地址,占用过多IP地址。

(3)基于NAT的负载均衡
将一个外部IP地址映射为多个内部IP地址,对连接请求动态地转换为1个内部节点的地址,将连接请求引导到该节点,从而达到负载均衡的目的。

NAT负载均衡通过软硬件都可以实现。软件方式往往受到带宽和系统本身处理能力的限制;硬件一般是处于内部节点到外部网络之间的网关位置,如路由器、防火墙、四层交换机、专用负载均衡器等,均衡算法也较灵活。

(4)反向代理负载均衡
将来自互联网的连接请求以反向代理的方式动态地转发给内部网络上的多个节点进行处理,从而达到负载均衡的目的。

反向代理均衡也是可以通过软硬件都能实现;可以将负载均衡与高速缓存技术相结合,提升静态资源的访问速度,改善系统性能。同时,由于外部网络用户不能直接访问真实的节点计算机,具备额外的安全性(同理NAT也有此优点)。

缺点是反向代理处于应用层,必须为每种应用服务专门开发一个反向代理服务器,限制了反向负载均衡技术的应用范围,现在一般用做WEB服务器的负载均衡;其次,每次代理,代理服务器都需要打开2个连接,一个对外,一个对内,并发连接数量非常大的时候,容易成为瓶颈;容易出现单点故障。

(5)混合型负载均衡

6、进程迁移技术
进程迁移是指当进程运行时,在(集群内)源节点和目标节点之间转移进程的行为。由于这个过程中转移的是活跃进程,因此又称为抢占式进程迁移。

进程迁移是支持负载均衡和高容错性的一种非常有效的手段,是实现负载均衡的基础。集群系统进行任务调度的主要方法是进程迁移技术。

以上是关于系统可靠性分析与设计的主要内容,如果未能解决你的问题,请参考以下文章

系统架构设计-系统的可靠性分析与设计

软考 系统架构设计师系统可靠性分析与设计② 可靠性设计

可靠性设计与分析关键技术

可靠性设计与分析关键技术

软件设计师-计算机组成与体系结构-系统可靠性分析

可靠性设计与工程计算