系统可用性——冗余就够了吗?

news/2024/4/24 23:36:47/

导言

为了提高系统的可用性,如今很多集成商都号称采用了冗余设备来满足客户需求,乍一看产品性能提高不少。当我们再回顾其产品时,不禁要思考两个问题:

  1. 系统真的做到冗余了吗?
  2. 仅仅使用冗余就够了吗?

回答这两个问题前,我们首先要理解冗余的定义。冗余,是指重复配置系统的一些部件,当发生故障时,冗余配置的部件介入并承担故障部件的工作,由此减少系统的故障时间Down Time,系统自动备援。

在安全相关系统中经常会提及单点失效(single point of failure),即当系统中某一点失效时,会导致整个系统都无法运作;对于高可用性的系统来说,是不会允许单点失效引起整体系统故障的情形出现的。一般可以通过冗余的方式增加具有相同功能的部件,只要这些部件没有同时失效,系统仍可正常运行,从而提高了系统的可用性。

首先,冗余系统的布置主要有两种不同的方式:

  • 1: n-对称冗余布置

在1:n-冗余布置的系统中,共n+1个具有相同机能的部件组成一个整体单元。当n个主机中的某一个发生故障时,备机则自动切换介入系统的工作;当然出现新的部件故障时,整个系统则将无法正常工作。典型的例子是目前很火热的双机热备:在系统正常工作情况下,主机为应用系统提供服务,备机监视主机的运行情况,当主机出现异常时,备机将在短暂时间内接管主机的工作,继续支持应用系统服务,保证系统不间断的运行。(插播:所以至少从功能上来讲,冗余系统的主备件功能是不同且非独立的,包括后面我们会讲解的2oo2系统,它的两个通道也不是独立的,因为单通道的功能其实是依赖于另外一个通道的。)

  • 非对称冗余布置

与之相对的布置方式是非对称冗余,备件会短暂或长久执行原有主机的工作,但功能却与原系统有差异,备机一般只执行系统的部分功能。这种方式一般作为临时处理系统故障的方案,在一定时间后还需要人工介入替换故障部件,以恢复系统全部功能。

其次,冗余系统按类型来分,通常可分为热备、温备和冷备。

备件替代故障的主件执行相关工作所需的时间越短,则整个系统的可用性越高。这种替代的类型可分为全自动的(无需人的介入),半自动的(几乎实时的人工远程控制)以及完全人工现场替换故障部件;系统的平均修复时间(MTTR,mean time to repair)越短,则该备用越“热”。这与我们通常划分冗余类型的定义稍有“歧义”,传统的冗余类型会分成主动和被动形式,其实主动切换(hot-standby)意味着更短的MTTR,而被动切换需要用户使用程序(warm-standby)或用户手动切换(cold-standby),它们必然需要更长的MTTR.

讲到这里先点个题——系统可用性,指的是考察某个特定的时间段内系统或部分系统能够正常运行的概率,例如某产品一年内平均故障8.75个小时,则其可用性为99.9%(100%-8.75h : (365d*24h/d) )。

可以简单的说,安全相关系统组件由硬件和软件构成,除了应用程序软件外,系统还需要操作系统和特定配置的帮助。据以往运营商的经验来看,硬件可用性往往是高于软件可用性的。这也就是我们为何要在软件或者系统失效(对于软件而言,所有的失效都是系统失效)上花更多力气的原因。

例如,一个路由器一年之内就会坏掉几次,其中因硬件故障(例如磨损、过热或者设备故障)而导致路由器故障的情况只有一次,其余所有故障都是操作系统中的漏洞(如程序员导致的)或者配置错误(如管理员导致的)。在10个小时的”downtime“中,硬件故障所占比例大概为1个小时,其余的九小时则都是直接或间接地归咎于人为操作所引起的系统失效。

目前,很多集成商把热备与冗余混淆,这是有区别的,真正的双机热备,是两个处理器都接受信号,只是一个不向外部送信号,这样切换的时间非常短,比如在紧急停车系统中的应用;而其它一般冗余系统有一个切换的时间,只有一个处理器出现问题了,另一个处理器才接受信号,切换时间比较长。普通热备处理相对简单些,比如在两个处理器中装入相同的程序,外部的信号通过继电器等分两路送到处理器中。

冗余是一个比较宽泛的技术概念,做到冗余的同时我们需要考虑其备援的时间,以及因冗余配置而给系统带来的主备切换、编程和配置等方面产生的可能的新的错误,充分思考冗余机制本身的问题,而不仅仅是无脑增加备件,因为冗余系统是指数级增长的复杂系统。

首先,我们在可用性这边讲SIL是极其不专业的行为。但SIL安全完整性等级是一个连接定量与定性的很好的桥梁。安全完整性针对的失效也是系统的和随机的失效。目前针对随机失效已经有相当多的技术来控制因随机失效引起的危害,尤其是硬件系统。系统失效则是未能获得预期的输出,通常是因为错误的规范或开发流程-相同的输入和上下文信息相同时系统失效可重复发生。一般都是通过检查、应用标准流程、代码等来控制系统失效引起的危害。这些流程或技术一定程度上也会减少随机失效。再次提及,对于软件而言,所有的失效都是系统失效。

SIL3/4的技术思维

1、对于SIL3/4来说,EN50129一直强调的是all credible faults(所有可信的有危害的故障)。即,要么证明此故障或故障组合的发生是不可置信的(不能发生),要么在分析中要必然对其进行考虑(认为必定发生)而不论元器件失效率的值有多低。这是因为,通常我们看到的元器件的失效率是一个理想值,不能完全呈现真实的失效情况,很多时候它甚至不是问题的主要矛盾。这个值实际上受到许多部分可量化和不可量化的限制,如:间歇故障、瞬态故障、芯片设计/工艺/生产系统性失效、模型限制、超规使用、存储/运输/使用中的环境应力等等。因此在SIL3/4的结构性要求中,对此不完全采信,也就是认为,即使失效率值足够低,其残余风险仍然不可接受。对SIL3/4,先认为可能发生的失效一定能发生,然后再考虑是否需要进一步处理,直到4重故障累积(不进一步处理的原因只是因为产品的预计生存期已远小于要求的SDT)。

2、与基础规范EN61508和其它行业规范“容许对检不出的hazardous失效不处理” 不同, EN50129要求尽量对hazardous失效进行处理(检出或累积检出),直到没必要再检。所以,EN50129没有“不可检的概率” 的概念。也就是衡量是否需要进一步处理的判断依据是单点或多重故障的SDT(当然也和FR有间接关系),因此说SDT是定性和定量之间的桥梁。
3、如果一个item的fault没有被及时的detection and negation,则分析中认为其被累积到下一个fault的发生是必然的(适用于单点和多重故障)。

4、故障模式包括间歇性故障和瞬态故障(soft error)。

5、悲观的思维方式——如果不确定或不能证明,那就取最不利的;计算时应考虑更不利的失效率(单点失效或多重失效)。

6、如果不确定故障原因,那就按最严格的方式处理;不允许在有危害的状态下工作。

7、故障-安全设计理念,防御性设计思维。考虑防护本身的失效,防护措施尽量为inherent fail-safety properties 。对特定风险采取针对性的独立可靠的措施进行防护,不同层的防护措施也应独立可靠。“独立可靠”意为可独自将相应风险降到足够低的程度。注意检查项/防护与被检项/被防护之间的独立性。自己的事情自己做,努力做最好的自己;清晰有效的层层防护,防护分层不击穿;检察官不能和嫌疑人在一个碗里吃饭,不能既是医生又是精神病患者。尽量用technical means解决问题。

8、单点或二重故障必考虑(处理);三重故障先识别再判断是否考虑(处理);四重故障先识别再判断为不处理。

9、要求安全态的保持:进一步的故障不能取消安全态;退出安全态只能发生在受控的方式下。安全态的分级和严格安全态。


http://www.ppmy.cn/news/48326.html

相关文章

量子力学、波函数与量子计算:揭开宇宙微观奥秘的神奇之门

在一个遥远的星球,生活着一群拥有超自然力量的智慧生物。他们能够随心所欲地让物体在空间瞬移,甚至能够预测未来。有一天,一位地球科学家意外穿越到了这个星球。经过一番了解,科学家惊奇地发现,他们所掌握的这种神奇力…

大厂面试-算法优化:冒泡排序你会优化吗?

关注公众号:”奇叔码技术“ 回复:“java面试题大全”或者“java面试题” 即可领取资料 原文:冒泡排序及优化代码 https://blog.csdn.net/weixin_43989347/article/details/122025689原文:十大经典排序算法 https://frxcat.fun/p…

大数据数仓维度建模

目录 维度建模分为三种: 1、星型模型: 2、雪花模型: 3、星座模型: 模型的选择: 维度表和事实表: 维度表: 维度表特性 : 事实表: 事实表特性: 事务型…

KDXJ-8 SF6气体泄漏报警在线检测系统

一、功能特点 1. 定量测量SF6(六氟化硫)气体浓度; 2. 定量测量O2(氧气)气体浓度; 3. 定量测量大气温湿度; 4. 可根据需要设置SF6和O2气体浓度的报警点; 5. 后台监控; 6.…

电脑不限时长的录屏软件分享

案例:有没有录屏软件不限时长录制视频? “今天的视频会议特别重要,我想用录屏的方式记录下来。在网上下载了一个录屏软件,录到3分钟的时候,需要解锁高级功能才能继续录制。想问问大家有没有电脑免费不限时长的录屏软件…

\r与\n详解

在 C 语言中, 回车符可以用 “\r” 来表示, 换行符可以用 “\n” 来表示。 例如,在代码中使用 printf() 函数输出 “Hello\r\nWorld”,那么输出的结果将会是: Hello World其中,"\r\n" 表示一个回…

根据身份证号码判断是否是未成年人

/**** * 根据身份证号计算年龄 * param str * param currDate * return */ public boolean calcYear(String str, Date currDate){ DateFormat dateFormat new SimpleDateFormat("yyyyMMdd"); Long year Long.par…

ESP32学习笔记14-mqtt-连接官方mqtt,onenet,thingsboard物联网平台

12.MQTT 12.0工程里的WiFi密码和ssid设置 工程的WiFi配置 ssid password 打开配置 配置ssid和密码 工程配置文件sdkconfig IP和端口配置 乐鑫服务器mqtt 12.1数据结构和配置函

DQL查询语言(2)

目录 一交叉连接: 交叉连接的基本格式: 交叉连接的基本格式 笛卡尔积: 带条件的交叉连接: 二、内连接: 内连接的基本格式: 不带条件的内连接: 内连接和交叉连接的区别: 三、外连接: 1、左外连接(简…

如今的就业环境下,怎样才能跻身于高收入的IC行业?

看到不少人失业找工作,其实现在不光是大学生难找工作,在职的人工作也不怎么开心。 要么累,要么没前途。 要么又累又没前途。 总的占个啥吧,现在大家面临的问题就是工作时间越来越久,人际关系也搞得很压抑&#xff0…

C嘎嘎~~【初识C++ 上篇】

初识C 上篇 🫅1. C关键字🫅 2.命名空间🤷‍♂️2.1命名空间的定义🤷‍♂️2.2命名空间的使用 🫅 3.C输入 & 输出 转眼间, 就进入C这个新的篇章啦! 我带着些许心悸 和 激动: 心悸…

借鉴《观沧海》作现代爱情诗一篇

《观星空》 浩瀚的星空,闪耀着无尽的光芒, 拥抱着几许的寂寥和宁静, 而你,如同在我心中灿然闪耀的繁星, 指引着我前行的方向。 天地万物,都有着各自的轨迹, 同样,我们也因着时空的巧…

大小字母转换

1.代码实例: public class UpString { public static void main(String[] args) { if(args!null && args.length 1){ String str new String(args[0]); System.out.println(“原字符:” str “\n”); String newA str.toUpperCase(); System.out.prin…

计算机网络科普

文章目录 1、集线器2、CSMA/CD协议3、交换机3.1 交换机的桥接 4、 路由器4.1 关于网关 5、 路由表6、IP地址6.1 DNS 7、MAC地址8、ARP协议9、关于网络层次模型10、路由器11、猫/光猫 1、集线器 计算机之间的相互通信,你会怎么设计? 如果是两台计算机&…

手机端无线投屏技术及方案推荐

目前主流的无线投屏技术主要又DLNA,Miracast,Airplay。 对协议的描述引用知乎作者的文章,原文:AirPlay、Miracast 、DLNA三大协议对比 - 知乎 (zhihu.com) 【DLNA】 DNLA,Digital Living Network Alliance&#xff…

LeetCode 1218. Longest Arithmetic Subsequence of Given Difference【哈希表,动态规划】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

nodejs扫描文件夹搜索包含关键词文件,可灵活配置

代码放在在末尾 文件说明: 关键代码:search.js 搜索结果:searchResult.txt 搜索日志:search.log 注:只保留一次的,需要多次自行修改logFile配置即可; 使用方式: 将代码放到需要…

容器内无tcpdump,如何在宿主机上抓容器的包

抓包的容器里,没有安装tcpdump 命令,我们可以去容器所在宿主机上,使用 nsenter 命令切换网络命名空间后,使用宿主机上的tcpdump 命令,对容器进行抓包分析。 此例中,我要抓取容器中端口是5240的包&#xff…

【论文阅读】CVPR2023 IGEV-Stereo

用于立体匹配的迭代几何编码代价体 【cvhub导读】【paper】【code_openi】 代码是启智社区的镜像仓库,不需要魔法,点击这里注册 🚀贡献 1️⃣现有主流方法 基于代价滤波的方法和基于迭代优化的方法: 基于代价滤波的方法可以在c…

(转)使用Midjourney进行图生图

原文链接:使用Midjourney进行AI绘画的基础手册-虎课网 接下来,我们讲一下,如果使用Midjourney的垫图功能,创作相同风格的图片 第一步: 1、打开discord,查看自己的服务器 2、我们双击“+”,来上传图片,图片上传后,按下enter发送图片; 图片发送成功后,点击图片放大…