系统韧性研究(4)| 系统韧性的技术分类

系统韧性技术是任何提高系统韧性的架构、设计或实现技术。这些技术(例如缓解措施,如冗余、保障措施和网络安全对策)或被动地抵御逆境或主动检测逆境,并对其做出反应,亦或者从它们造成的伤害中恢复过来。系统韧性技术是系统实现其韧性需求的手段。韧性技术也可以被视为架构、设计或实现模式或习惯用法。本文首先澄清韧性要求和韧性技术之间的关系。由于系统、软件和专业工程师有许多可以用于提高系统韧性的技术,因此本文还提出了一个用于对这些韧性技术进行分类的本体。

01

系统韧性-简要回顾

正如我在本系列的前3篇文章中所概述的——系统韧性很重要,因为没有人想要一个无法克服“不可避免的逆境”的脆弱系统。如果不利事件或条件导致系统无法正常运行,则可能会对有价值的资产造成各种形式的损害。

在本系列关于系统韧性的第一篇文章中,我通过提供以下更详细和微妙的定义来解决这些问题:系统的韧性达到了它快速有效地保护其关键能力免受不利事件和条件造成的伤害的程度。

第二篇文章确定了八个次要质量属性,对可能破坏关键系统的不利因素(即不利条件和事件)进行了分类。

第三篇文章介绍了系统韧性需求的工程,以及如何使用它们来推导下级质量属性的相关需求。

本文,亦即本系列的第四篇文章将要做的是,提供一种对系统韧性技术进行分类的方法,并展示它们与系统韧性需求的关系。

02

系统韧性技术

单个韧性技术通常可以保护任务关键能力免受多种类型的多重不利因素的影响。每个关键能力通常会被多种类型的大量逆境破坏。通常,在有限的项目资源(如人员配置、时间表和预算)内,会有更多的不利因素无法适当解决。因此,首先强调必须保护其免受破坏性损害的关键能力。然后,可以使用风险管理来识别、优先化和分析足够多的最重要的不利因素,以充分保护任务关键能力。

如下图所示,韧性要求并不直接推动韧性技术的选择。相反,这种选择是由衍生的韧性相关鲁棒性、被动安全性、主动安全性、防篡改、生存性、容量、寿命和互操作性需求中捕获的特定不利因素驱动的。下图显示了关键功能、实现它们的关键资产以及可能对它们造成的破坏性伤害如何推动韧性需求的工程。特定的不利因素用于导出下级韧性相关质量属性的需求(即鲁棒性、被动安全性、主动安全性、防篡改、生存性、容量、寿命和互操作性需求)。然后,架构师和专业工程师选择适当的韧性技术来直接实现这些特定于逆境的衍生需求,从而间接实现韧性需求。

除了韧性及其从属质量属性外,许多韧性技术还增加了多个质量属性。例如,冗余还可以提高可用性和可靠性,而模块化也可以提高可维护性。

韧性技术是抽象的,必须在系统中实现,以实现其预期效果。然而,如果技术选择不当或实现不当,结果可能与预期不同,甚至可能降低系统的韧性。因此,韧性技术并不总是“最佳实践”,因此添加更多的技术并不一定更好。需要大量的专业知识、分析和测试,以确保所实施的选定技术实现系统的韧性要求,而不会导致系统无法满足其他质量属性要求。

下图显示了对韧性技术进行分类的三种不同方法。从左到右,它们是:

  • 自治程度(紫色部分)。与手动韧性技术不同,自动韧性技术在无需人工干预的情况下自动执行。混合韧性技术部分自主,部分手动。
  • 执行韧性功能(黄色部分)。抵抗力技术被动地抵抗逆境。检测韧性技术主动检测逆境,而反应韧性技术主动对检测到的逆境做出反应,恢复韧性技术主动修复逆境造成的伤害。许多技术结合了这类技术中的两种或更多种。
  • 构成(蓝色部分)。子系统韧性技术由专用子系统(如火灾探测和灭火系统)实现。它们可以用硬件(如硬件联锁和冗余传感器)或软件(如各种投票方案)来实现。同理,数据韧性技术主要在数据中实现(如校验和),尽管它们通常需要软件来操作数据。

下图显示了如何将韧性技术映射到韧性需求,但又与韧性需求有所不同,韧性需求应该是内聚的,并且只指定单个独立于实现的需求,单个韧性技术通常执行多个功能。例如,火灾探测和灭火系统(FDSS)既可以检测不利因素(烟雾的存在),又可以通过抑制相关火灾来做出反应,以最大限度地减少额外的危害。

03

总结与预告

显而易见的是,有很多可以用于实现系统韧性需求的技术。这些技术可以以多种方式进行分类,其中最重要的两种是按韧性功能和实施方式分类。这种丰富的技术和类型的技术为系统架构师和专业工程师提供了很大的灵活性,以确保足够的韧性,特别是在使用多层“深度防御”方法时。另一方面,整合韧性技术增加了系统复杂性,因此,矛盾的是,会降低系统的韧性。选择正确的数量、类型和韧性技巧的平衡绝非易事。

在下一篇文章亦即本系列的第五篇文章中,我将探讨一个相对全面的韧性技术列表,并给出一个表单,根据它们执行的韧性功能和组成来对其进行组织。

敬请期待。

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

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

相关文章

软件测试/测试开发丨探索标识符在编程中的重要性

点此获取更多相关资料 什么是标识符 在 Python 中,标识符是用来标识变量、函数、类、模块和其他对象的名称。需要注意的是,在定义标识符的时候,虽然很自由,但是也不能随心所欲,合法的标识符需要遵从一定的规范。 命…

ArcGIS实现矢量区域内所有要素的统计计算

1、任务需求:统计全球各国所有一级行政区相关属性的总和。 (1)有一个全球一级行政区的矢量图,包含以下属性(洪灾相关属性 province.shp) (2)需要按照国家来统计各个国家各属性的总值…

突然消失的桌面文件如何恢复?详细教程让你轻松解决问题!

桌面文件突然消失,对于很多人来说,可能是个令人头疼的问题。这些文件可能包含重要的信息,也可能是数日甚至数周的努力成果。那么,当这种情况发生时,我们如何恢复丢失的文件呢?本文将提供一些实用的建议。 1…

【ArcGIS Pro微课1000例】0031:las点云提取(根据范围裁剪点云)

本文讲解ArcGIS Pro3.0中,las点云数据的提取(根据范围裁剪点云)方法。 文章目录 一、加载数据二、工具介绍三、点云裁剪一、加载数据 打开ArcGIS Pro,新建地图,加载配套实验数据包中的0031.rar中的点云数据point.las与范围bound.shp,如下图所示: 二、工具介绍 名称:提…

table表格的某一行数据如何回填

目的:table表格的某一行数据的输入框按钮触发对话框,对话框选择的数据再回填到table表格的这一行中。 1.插槽中传递本行的index: v-slot"{ row, $index }" 2.点击事件或者change事件传递index: click"val > tpmClicked($index)"…

一张图搞懂什么是BCD8421编码

如图所示 BCD8421编码的意义是 用四位二进制数表达一位的十进制数 因此十进制下的0~9在BCD8421编码下与其二进制表达是一样的 而多位的十进制数 比如说“10” 则需要将它拆分成两个单独的数“1”和“0” 分别用BCD8421编码表示这两个数 十进制“1” -> 0001 十进…

JAVA基础7:数组

1.数组定义格式 1)数组概述 一次性声明大量的用于存储数据的变量 要存储的数据通常都是同类型数据,比如:考试成绩 数组(array)是一种用于存储多个相同类型数据的存储模型 2)数组定义格式 格式一:数据类…

在虚拟环境中pip包不在虚拟环境里

这里写自定义目录标题 结合网上多个大佬的方法终于解决了. 首先修改自己虚拟环境目录下的site文件: vim /home/XXX/.conda/envs/XXX/lib/pythonXXX/site.py 把 USER_BASE 和 USER_SITE 改成虚拟环境目录. USER_BASE: ‘/home/XXX/.conda/envs/XXX’ (exists) USER_SITE: ‘/ho…

内衣洗衣机和手洗哪个干净?好用的内衣洗衣机推荐

在日常生活中,我们的衣服不可避免地会沾染上各种细菌、毛发和污渍,将它们与贴身衣物混合清洗,很容易发生交叉感染,而被感染后,贴身衣物也有可能导致我们人体引起皮肤病。这也是为什么大部分人都喜欢用手洗的原因&#…

c# 和 c++ 匿名互相传递参数

在C#和C之间进行匿名参数传递需要使用Interop服务。下面是一个示例,展示了如何在C#和C之间传递匿名参数: 在C#中: using System; using System.Runtime.InteropServices;// 定义C中的匿名函数签名 [UnmanagedFunctionPointer(CallingConven…

@CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思

@CacheInvalidate 注解是 JetCache 框架提供的注解,它是由阿里巴巴开源的组织 Alibaba Group 开发和维护的。JetCache 是一款基于注解的缓存框架,提供了丰富的缓存功能和灵活的配置选项,可用于增强应用程序的性能和可扩展性。JetCache 支持多种缓存后端,包括内存缓存、Redi…

矩阵的除法

B/A 如果矩阵A可逆,那么 证明: A/AB 如果矩阵A和B都可逆,那么 证明:

基于回溯搜索算法优化概率神经网络PNN的分类预测 - 附代码

基于回溯搜索算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于回溯搜索算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于回溯搜索优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

优雅的Java编程:将接口对象作为方法参数

theme: smartblue 目录 概述 在Java编程中,方法的参数传递方式通常是通过基本类型、对象引用或者集合等方式。然而,一种更加优雅且灵活的设计模式是将接口对象作为方法的参数。这种方式为我们带来了许多好处,包括降低耦合性、实现多态性和可…

Jenkins 构建CICD

GitLab GitLab安装 https://gitlab.cn/install/?versionce CentOS 下安装 1. 安装和配置必须的依赖项 在 CentOS 7上,下面的命令也会在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问。这是一个可选步骤,如果您打算仅从本地网络访问极狐GitLab&#xf…

Java集合(全)

Java提供了多种集合框架类,每种都有不同的特性和用途。以下是Java中常见的集合类: 1、List(列表): ArrayList ArrayList 是 Java 集合框架中的一个常用类,实现了动态数组的数据结构。与传统的数组相比,A…

【现场问题】datax中write部分为Oracle的时候插入clolb类型字段,插入的数据为string且长度过场问题

datax的Oraclewriter 报错显示查询报错展示查找datax中的数据插入模块 报错显示 occurred during batching: ORA-01704: string literal too long 查询报错展示 基本上查到的都是这样的,所以锁定是clob的字段类型的问题,而且是只有Oracle出问题&#…

觉非科技发布【轻地图高速NOA智驾方案】|地平线,觉非科技,MobileDrive超捷生态协作实现技术落地

11月10日,2023世界新汽车技术合作生态展期间,觉非科技正式发布了基于地平线征程系列以及MobileDrive超捷规控系统的【轻地图高速NOA智驾解决方案】。该方案首次实现了从芯片能力输出、到数据闭环建设、再到规控部署的产业生态链协作与打通,为…

docker部署容器化mysql5.7

部署MySQL 本教程将指导您如何在Docker环境中部署MySQL数据库,并展示如何通过外部MySQL客户端与之交互。 步骤 1: 准备环境 首先,我们需要在本地环境中创建必要的文件夹结构来存储MySQL的配置、日志和数据。 # 在终端创建mysql文件夹及其子文件夹 mk…

微信小程序漏洞之accesskey泄露

更新时间:2023年09月08日09:42:52 1. Accesskey泄露漏洞 这篇文章里面都是以我个人的视角来进行的,因为一些原因,中间删了一些东西,肯定有很多不正确的地方,希望大家能理解,也能指正其中的错误。 在以前…