前端工程师应该了解的软件系统可靠性知识
作为前端工程师,需要了解一些基本的软件系统相关的可靠性知识。本文介绍了一些和系统可靠性相关的基本概念,容错、排错、冗余技术。内容虽然很少但都是精华,希望觉得有用的朋友积极评论~
1. 可靠性相关的概念
- 系统可靠性:指系统在规定的时间内以及规定的环境条件之下,完成规定功能的能力,也就是系统无故障运行的概率。
- 系统可用性:在某个给定时间点上系统能够按照需求执行的概率;
- 可靠度:系统在某个规定的条件下,规定时间内不发生失效的概率。
- 失效率:又称为风险函数,或则条件失效强度,指的是运行至刺客系统没有出现失效的情况下,在未来的单位时间内系统出现失效的概率。
2. 软件和硬件可靠性对比
从复杂度、退化、唯一性、更新周期四个方面做对比:
- 复杂性:软件一般来说要比硬件更加复杂,失效大部分是软件导致的
- 退化:软件不存在物理退化,但是硬件存在物理退化的问题
- 唯一性:硬件不具备唯一性,但是软件是唯一的
- 更新周期:软件更新周期短,硬件更新周期长
3. 提高可靠性的技术
提高可靠性的技术可以分为避错(排错)技术和容错技术。
3.1 避错技术
所谓避错技术指的就是通过技术评审、系统测试、正确性证明 等技术,在系统运行之前 ,发现、避免和改正错误。
容错技术
所谓容错技术指的就是在运行过程中 发生一定的硬件故障或者软件错误时,仍能保持正常工作而不影响正确结果的一种性能或错误。容错技术主要通过冗余方法来消除错误影响。
3.2 冗余
指的就是在正常系统运行所需的基础上加上一定数量的额外资源,包括信息、时间、硬件和软件 。冗余技术是容错技术的基础。通过加入一定量的冗余资源,可以使系统的可靠性得到较大的提高。冗余技术可以分为:结构冗余、信息冗余、时间冗余、冗余附加。
3.3 结构冗余
结构冗余又可以分成:静态结构冗余、动态结构冗余和混合结构冗余。
4. 软件容错
软件容错的主要方法是提供足够的冗余信息和算法程序,使系统在时机运行时 能够及时发现程序的设计错误 ,采用补救措施 ,以提高系统可靠性 ,保证整个系统的正常运行。采用的技术有:N版本程序设计、恢复块方法、防卫式程序设计。
4.1 N版本程序设计
用N个具有相同功能的程序同时执行一项计算 ,结果通过多数表决 和工具来实现。需要注意的是:其中N个版本的程序必须由不同的人独立设计,使用不同的方法 、设计语言 、开发环境 和工具 ,这样做的目的是为了减少N个版本的程序在表决点上相关错误的概率。
4.2 恢复块设计(又称为是动态冗余或者主动冗余)
通过故障检测、故障定位和故障恢复 等手段达到容错的目的。其主要的实现方式是多重模块待机储备 ,当系统检测到某工作模块出现错误时,就用一个备用的模块来代替它并重新运行 。各备用模块在其待机时,可以与主模块一样工作,也可以不工作。前者称为:热备份系统或者双重系统 ,后者称为冷备份系统或者(双工系统、双份系统)。
比较N版本程序设计和恢复块设计两种方法:
恢复块方法 | N版本程序设计 | |
---|---|---|
硬件运行环境 | 单机 | 多机 |
错误检测方法 | 验证测试程序 | 表决 |
恢复策略 | 后向恢复 | 前向恢复 |
实时性 | 差 | 好 |
4.3 防卫式程序设计
是一种不采用任何传统的容错技术就能实现软件容错的方法。
对于程序中存在的错误和不一致,防卫式程序设计的基本思想是通过在程序中包含错误检测代码和错误恢复代码,使得一旦发生错误,程序就能够撤销错误状态,恢复到一个一直的正确状态中去。
其实现策略包括:错误检测、破坏估计和错误恢复三个方面。
5. 硬件容错
5.1 双机容错技术
是一种软硬件结合的容错应用方案,由两台服务器和一个外接共享磁盘阵列及相应的双机软件组成。
双机容错系统采用心跳的方法保证主系统和备用系统的联系。
所谓心跳,指的就是主从系统之间相互按照一定的时间间隔发送通信信号,信号表明了系统当前的运行状态.
一旦主机发生了运行错误、检测不到心跳 ,系统的高可用性软件就会立即将主机的资源转移到备用机上,以接替主机并保证系统的正常运行和网络服务的不间断。
双机容错技术包括:双机热备模式、双机互备模式、双机双工模式。
5.2 集群技术
将多台计算机组织起来进行协同工作,以提高系统的可用性和可靠性。
在集群系统中,每一台计算机均承担部分计算任务和容错任务 ,因此当其中一台计算机出现故障的时候,系统中的集群软件就会将这台故障计算机从系统中隔离出去 ,然后通过负载转嫁机制完成新的负载分担 ,最后向系统管理人员发出警报。
集群系统通过功能整合和故障过渡,实现可系统的高可用性和可靠性。
- 特点 :
可伸缩性、高可用性、可管理性、高性价比、高透明性
- 分类 :
高性能计算集群、负载均衡集群、高可用性集群
5.3 负载均衡
- 负载均衡是集群系统中的一项重要的技术,可以提高集群系统的整体处理能力,也提高了系统的可靠性。
- 最终的目的:加快集群系统的响应速度,提高客户端访问的成功概率。
- 最大特征:多个结点并行和共同工作
- 核心问题:如何让所有结点承受的负荷平均,不出现局部过大负载或者过轻负载
- 负载均衡的实现技术:
- 基于特定软件 的负载均衡:应用层技术,例如http协议的重定向功能
- 基于DNS 的负载均衡:传输层技术,DNS服务器 为一个主机名创建多个ip地址,然后按顺序返回
- 基于NAT 的负载均衡:核心是将一个外部ip映射成多个内部结点的ip地址
- 反向代理 负载均衡:将来自外部的网络连接 请求以反向代理的方式动态的转发给内部网络上的多个结点进行处理
- 混合型负载均衡:就是上面技术的混合应用