• 系统可靠性设计(系统架构师)


    目录

    1. 系统故障模式

    2. 系统可靠性模型

    3. 可靠性指标与评估

    3.1 可靠性指标

    3.2 可靠性计算

    4. 可靠性设计

    4.1 冗余技术

    4.2 软件容错

    4.3 集群技术

    参考


    系统可靠性是指系统在规定的时间内及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率。

    • 规定时间

    我们一般用系统的执行时间来算,这样比较准确。

    • 规定的条件

    规定条件,一般是指软件的运行环境。在不同的环境下,软件的可靠性是不同的。有了明确的环境条件,我们就可以有效的判断软件系统是否失效,责任方是在用户方还是开发方。

    • 所要求的的功能

    要求的功能不一样,软件的运行情况会有所区别,其可靠性也不同。所以要准确度量软件系统的准确性,必须先明确它的任务和功能。

    1. 系统故障模式

    系统故障时只由于部件失效、环境的物理干扰、操作错误、不正确的设计引起的硬件或软件中的错误状态。表现形式有:

    永久性、间歇性、瞬时性

    对故障的表现进行建模,可以建立4个级别的故障模型:

    • 逻辑级的故障模型:固定性故障、短路故障、开路故障、桥接故障。

    • 数据结构级的故障:故障在数据结构上表现为差错。常见的差错:独立差错、算数差错、单向差错。

    • 软件故障和软件差错:软件故障指软件设计过程造成的与设计说明不一致,软件故障在数据结构或程序输出中的表现成为软件差错。

    • 系统级的故障模型:在系统级上表现为功能错误,即系统输出与系统设计说明的不一致。

    2. 系统可靠性模型

    与系统故障模型对应的就是系统可靠性模型,常见有3种

    • 时间模型

    • 故障植入模型

    3. 可靠性指标与评估

    3.1 可靠性指标

    • 平均无故障时间

    • 平均故障修复时间

    • 平均故障间隔时间

    3.2 可靠性计算

    • 串联系统

    假设一个系统由n个子系统组成,当且仅当所有子系统都能正常工作,系统能正常工作。

    设系统中各个子系统的可靠性分别用R1,R2,...,Rn表示,各个子系统的失效率分别为L1,L2,L3,...,Ln。

    可靠性:R = R1 * R2 * R3 * ... * Rn

    失效率:L = L1 + L2 + ... + Ln

    • 并联系统

    在一个由 n 个模块(部件)构成的系统中,只要有一个模块可运行, 系统就可运行。

    可靠性:R = 1 - (1 - R1)* (1 - R2) * (1 - R3) * ... * (1 - Rn)

    • 模冗余系统

    4. 可靠性设计

    提高计算机可靠性的技术有避错技术、容错技术 。避错是预防和避免系统在运行中出错,例如:软件测试就是一种避错技术;容错是指系统在某一组件故障存在的情况下不失效,仍能够正常工作的特性,例如:冗余组件设计。

    4.1 冗余技术

    • 结构冗余

      • 静态冗余:三模冗余、多模冗余

      • 动态冗余:多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用模块替换它重新运行。

      • 混合冗余:兼有静态冗余和动态冗余的好处。

    • 信息冗余

    实现正常功能所需要的信息外,再添加一些信息,以保证运行结果的正确的方法。例如:纠错码。

    • 时间冗余:使用附加一定时间的方法来完成系统功能,这些附加时间主要用在故障检测、复查、故障屏蔽上。

    • 冗余附加技术

    为实现上述冗余所需要的资源和技术,包括程序、指令、数据、存放和调用他们的空间和通道等。

    系统一旦发生故障,就需要采用某种方法进行恢复。故障的恢复策略一般有前向恢复和后向恢复。前向恢复时指当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况,这需要有错误的详细说明;后向恢复时指系统恢复到前一个正确状态,继续执行,这种方法显然不适合实时处理场合。

    4.2 软件容错

    软件容错的主要目的是提供足够的冗余信息和算法程序,使系统在实际运行时能够及时发现程序设计错误,采取补救措施。

    • 恢复块程序

    恢复块方法是一种动态的故障屏蔽技术 ,采用向后恢复策略 。提供具有相同功能的主块和几个后备块,一个块就是一个执行完整的程序段,主块首先投入运行,结束后进行验证测试,如果没有通过验证测试,系统经现场恢复后由一后备块运行,直到可以耗尽所有后备块。

    设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和后备块之间的共性错误降到最低。

    • N版本程序设计

    一种静态的故障屏蔽技术 ,采用向前恢复策略 。其设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N份程序必须由不同的人独立设计,使用不同的方法,不同的设计语言,不同的开发环境和工具来实现。

    • 防卫式程序设计

    一种不采用任何一种传统的容错技术就能实现软件容错的方法,对于程序中存在的错误和不一致性,防卫式程序设计的基本思想是通过在程序中包含错误检查代码错误恢复代码 ,使得一旦发生错误,程序能撤销错误状态,恢复到一个已知的正确状态。其实现策略有错误检测、破坏估计、错误恢复 3个方法。典型的防卫式程序设计:try {} catch {}

    • 其它技术:限流,熔断,服务降级

    4.3 集群技术

    利用多台服务器,提供更稳定的服务。包括负载均衡集群等。

    • 集群分类

      • 高性能计算科学集群

      • 负载均衡集群

      • 高可用集群

    • 集群硬件配置

      • 镜像服务器双机

      • 双机与磁盘阵列柜

      • 光纤通道双机双控集群系统

    参考

    • 《系统架构设计师》

    关于作者:

    犇叔,浙江大学计算机科学与技术专业,研究生毕业,而立有余。先后在华为、阿里巴巴和字节跳动,从事技术研发工作,资深研发专家。主要研究领域包括虚拟化、分布式技术和存储系统(包括CPU与计算、GPU异构计算、分布式块存储、分布式数据库等领域)、高性能RDMA网络协议和数据中心应用、Linux内核等方向。

    专业方向爱好:数学、科学技术应用

    关注犇叔,期望为您带来更多科研领域的知识和产业应用。

    内容坚持原创,坚持干货有料。坚持长期创作,关注犇叔不迷路

  • 相关阅读:
    L2-020 功夫传人(Python3)
    电子电气架构设计需要考虑哪些方面?
    汽车零部件制造中的信息抽取技术:提升效率与质量的关键
    【疑难杂症】恢复挂载的nacos持久卷
    文件重命名自动化:批量处理让生活更简单
    【TcaplusDB知识库】Tmonitor单机安装指引介绍(一)
    网络安全之内容安全
    界面组件DevExpress Reporting v22.1 - 可自定义参数面板
    简化转换器:使用您理解的单词进行最先进的 NLP — 第 1 部分 — 输入
    基于Java+SpringBoot+Vue前后端分离电商应用系统设计和实现
  • 原文地址:https://blog.csdn.net/landy_john/article/details/127673094