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

目录

一、可靠性相关基本概念

二、可靠性指标

        1、串联系统与并联系统可靠性指标计算

        2、混合系统

三、可靠性设计

        1、影响软件可靠性的主要因素:

        2、增加可靠性的解决方案

                2.1 避错技术

                2.2 降低复杂度设计

                2.3 检错技术

                2.4 容错技术

        3、双机容错


一、可靠性相关基本概念

        【可靠性】:可靠性是软件系统在应用或系统错误面前 ,在意外或错误使用的情况下维持软件系统的功能性的基本能力。

        【可用性】:可用性是系统能够正常运行的时间比例

        软件可靠性 ≠ 硬件可靠性

        (1)复杂性:软件复杂性比硬件高,大部分失效来自于软件失效

        (2)物理退化:硬件失效主要是物理退化所致,软件不存在物理退化。

        (3)唯一性:软件是唯一的,每个COPY版本都一样,而两个硬件不可能完全一样。

        (4)版本更新周期:硬件较慢,软件较快。

二、可靠性指标

        【失效率】:(λ)λ = N / T,N表示在某个时间段内失效的总数,T则是相应时间段的总时间。

        【平均无故障时间】:(MTTF)MTTF = 1 / λ,λ为失效率

        【平均故障修复时间】:(MTTR)MTTR = 1 / μ,μ为修复率

        【平均故障间隔时间】:(MTBF)MTBF = MTTR + MTTF

        【系统可用性】:MTTF / (MTTR + MTTF)* 100%

         在实际应用中一般MTTR很小,所以通常认为MTBF ≈ MTTF。

        1、串联系统与并联系统可靠性指标计算

                串联: 

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

                        使效率近似公式:λ = λ1 + λ2 + ... + λn

                并联:

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

        2、混合系统

 

三、可靠性设计

        1、影响软件可靠性的主要因素:

        (1)软件的开发方法和开发环境(2)运行环境

        (3)软件系统的规模(4)软件的内部结构(5)软件的可靠性投入

        

        2、增加可靠性的解决方案

                2.1 避错技术

                        例如:使用CMMI(能力成熟度模型集成)规范管理过程、应用测试等。

                2.2 降低复杂度设计

                        设计层面降低系统复杂度。

                2.3 检错技术

                        出错后报警,人工处理,成本较低。

                2.4 容错技术

                        (1)N版本程序设计(静态冗余)

                                多个版本同时计算获得到结果,通过表决器算法最终确定采用结果。主要应用在可靠性要求极高的场景,成本高。例:飞行控制系统、高铁信号系统。

                                 与通常软件开发过程不同的是,N版本程序设计增加了三个新的阶段:相异成分规范评审、相异性确认、背对背测试。

                                N版本程序的同步、N版本程序之间的通信、表决算法(全等表决、非精确表决、Cosmetie表决)、一致比较问题、数据相异性。

 

                        (2)恢复快设计(动态冗余)

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

                                必须保证验证测试程序的正确性。

 

                        【N版本程序设计与恢复快方法区别】

                                 前向恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况。

                                后向恢复:系统恢复到前一个正确状态,继续执行。

 

                        (3)防卫式程序设计

                                 对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确的状态中去。

                                实现策略:错误检测、破坏估计、错误恢复。(例:代码中 try / catch 函数)

                        冗余:

                        (1)结构冗余(硬件冗余、软件冗余)

                        (2)信息冗余(校验码)

                        (3)时间冗余(重复多次进行相同计算)

 

        3、双机容错

                (1)双机热备模式(主系统、备用系统)

                (2)双机互备模式(同时提供不同服务,心不跳则接管)

                (3)双机双工模式(同时提供相同的服务,集群的一种)

                 双机模式是集群的前身

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/59162.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode】数据结构题解(11)[用队列实现栈]

用队列实现栈 😉 1.题目来源👀2.题目描述🤔3.解题思路🥳4.代码展示 所属专栏:玩转数据结构题型❤️ 🚀 >博主首页:初阳785❤️ 🚀 >代码托管:chuyang785❤️ &…

学C语言 | 位运算符<<的高级用法

前言 在上一篇文章中&#xff0c;我们介绍了~运算符的高级用法&#xff0c;本篇文章&#xff0c;我们将介绍<< 运算符的一些高级用法。 一、人物简介 第一位闪亮登场&#xff0c;有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿…

Android 实现 RecyclerView下拉刷新,SwipeRefreshLayout上拉加载

上拉、下拉的效果图如下&#xff1a; 使用步骤 1、在清单文件中添加依赖 implementation ‘com.android.support:recyclerview-v7:27.1.1’ implementation “androidx.swiperefreshlayout:swiperefreshlayout:1.0.0” 2、main布局 <LinearLayout xmlns:android"http…

Java课题笔记~ Spring 的事务管理

一、Spring 的事务管理 事务原本是数据库中的概念&#xff0c;在 Dao 层。但一般情况下&#xff0c;需要将事务提升到业务层&#xff0c;即 Service 层。这样做是为了能够使用事务的特性来管理具体的业务。 在 Spring 中通常可以通过以下两种方式来实现对事务的管理&#xff…

15_基于Flink将pulsar数据写入到ClickHouse

3.8.基于Flink将数据写入到ClickHouse 编写Flink完成数据写入到ClickHouse操作, 后续基于CK完成指标统计操作 3.8.1.ClickHouse基本介绍 ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用…

安卓:MMKV——键值存储库

目录 一、MMKV介绍 1.特点和优势&#xff1a; 2.使用指南&#xff1a; 3.依赖包&#xff1a; 二、MMKV的常用方法 1、初始化和获取实例&#xff1a; 2、存储数据&#xff1a; 3、读取数据 4、删除数据 5、其他操作&#xff1a; 三、MMKV的使用例子 MainActivity&#xff…

Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库

在之前的《手把手教你用 NebulaGraph AI 全家桶跑图算法》中&#xff0c;除了介绍了 ngai 这个小工具之外&#xff0c;还提到了一件事有了 Jupyter Notebook 插件: https://github.com/wey-gu/ipython-ngql&#xff0c;可以更便捷地操作 NebulaGraph。 本文就手把手教你咋在 J…

通义千问7B本地部署的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Service not registered 异常导致手机重启分析

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、Service not registered 异常导致手机重启二、Service not registered 解决方案 一、Service not registered 异常导致手机重启 1.重启 的部分Log如…

oracle积累增量和差异增量

积累增量和差异增量&#xff1a; 对于 RMAN 来说&#xff0c;积累增量备份和差异增量备份都是增量备份的一种形式&#xff0c;它们之间的区别在于备份的范围和备份集的方式。 积累增量备份&#xff1a;在进行积累增量备份时&#xff0c;RMAN 会备份自最后一次完全备份或增量备…

HTML——格式化文本与段落

&#x1f60a;HTML——格式化文本与段落 &#x1f30f;前言&#x1f3ad;HTML文本标签&#x1f3af;主体内容body标签&#x1f3af;标题字标签&#x1f3af;空格和特殊字符 &#x1f3ad;格式化文本标签&#x1f3af;文本修饰标签&#x1f3af;计算机输出标签&#xff08;成对标…