我的编程空间,编程开发者的网络收藏夹
学习永远不晚

系统韧性研究(1)| 何谓「系统韧性」?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

系统韧性研究(1)| 何谓「系统韧性」?

过去十年,系统韧性作为一个关键问题被广泛讨论,在数据中心和云计算方面尤甚,同时它对赛博物理系统也至关重要,尽管该术语在该领域不太常用。大伙都希望自己的系统具有韧性,但这到底意味着什么?韧性与其他质量属性(如可用性、可靠性、鲁棒性、风险应急能力、安全防御能力和柔性服务能力)有何关系?韧性是这些质量属性的一部分还是全部,是它们的超集,亦或其他云云?在确保系统具备韧性与否之前,我们首先要解开这些问题的答案,并确切地吃透:到底什么才是系统韧性。

作为赛博物理系统韧性需求开发工作的一部分,我最近完成了关于韧性的现有标准和文献的研究。我的研究发现:“韧性”这个术语通常在非正式场合使用彷佛它有明显的含义,在这些场合,它被定义为相似但又略微不同的解释。

我的另一个发现是,韧性一词其实有着两种截然不同的含义。本文是由7篇组成的系列文章中的第一篇,重点关注系统韧性而不是组织韧性,后者的范围要大得多——组织韧性主要涉及业务连续性,包括人员、信息、技术和设施的管理。

01

什么赋予系统以韧性?

一般而言,如果一个系统在逆境中持续执行任务(即,如果它在可能导致中断的过度压力下提供所需的能力),那么它就是有韧性的。有韧性很重要,因为无论一个系统设计得多么好,现实迟早都会破坏这个系统。软件或硬件中的遗留缺陷最终将导致系统无法正确执行所需功能,或导致系统无法满足一个或多个质量要求(例如,可用性、可靠性、鲁棒性、风险应急能力、安全防御能力和柔性服务能力)。无风险应急方案或风险应急方案失效将导致事故的发生,攻击者可能会通过未知或未修复的安全漏洞危害到系统,外部环境异常(例如断电或温度过高)也会中断服务。

由于这些不可避免的破坏,可用性和可靠性是不充分的,因此系统也必须具有韧性。它必须能够抵御逆境并提供连续性服务,即便是在不利事件和条件造成干扰后也需要运行在降级模式。它还需要能够迅速从这些干扰可能造成的伤害中恢复。就像Timex(始创于1854年的美国钟表品牌)的老广告一样,一个有韧性的系统可以做到“受虐千百遍运转如初恋。”

然而,系统韧性的本身比前面的解释要复杂得多。系统韧性不是一个简单的布尔函数(即系统不是简单的“具有韧性或不具有韧性”)。没有一个系统能够100%抵御所有不良事件或情况。韧性总体而言是一个程度的问题,通常不能用单一的有序量表来衡量。换言之,说系统A比系统B更有韧性可能是个伪命题。

想要充分理解韧性,必须将其组成部分进行分解、还原。为了表现出韧性,系统必须包含控制逻辑:对不良事件和条件的检测,对干扰的正确响应和干扰过后的迅速恢复。因为韧性会假设不利事件和条件一定会发生,如何防止不利情况的发生并不在韧性的范围内。

一些韧性控制逻辑支持检测,而其它控制逻辑支持响应或恢复。因此,一个系统可能在某些方面具有韧性,但在其他方面则不然。系统A可能是在某些特定不良事件的检测方面最有韧性的,而系统B可能在某些特定特性事件的响应方面,是最具韧性的;以此类推,系统C可能是在从某些不良事件造成的特定伤害中恢复方面,是最有韧性的。

了解系统抵御逆境的范围边界非常重要:

  • 在中断的情况下,系统必须继续提供哪些关键功能/服务?
  • 哪些类型的逆境会干扰这些关键能力的交付(即,系统必须能够容忍哪些不利事件和条件)?
  • 什么资产受到什么类型/级别的破坏会导致中断?

以上几点引出了对系统韧性的更详细、更细致的定义:

系统在一定程度上具有韧性,能够快速有效地保护其关键能力免受不利事件和条件造成的干扰。

前面的定义隐含着不良事件和条件会发生的想法。系统韧性是指当这些潜在的破坏性事件发生和条件存在时,系统会做什么。系统是否检测到这些事件和情况?一旦检测到它们,系统是否正确响应?之后系统是否恢复正常?

一些组织将“避免”不良事件和条件的发生纳入系统韧性范围。然而,“避免”并不在系统韧性的定义范围内,这是具有误导性和不恰当性的。避免或预防逆境并不能使系统更有韧性,相反,避免减少了对韧性的需求,因为如果逆境从未发生,系统就不需要有韧性。

图1说明了前文关于系统韧性定义中的关键概念之间的关系。韧性系统使用防护的韧性技术来被动抵御不利事件和条件,或主动检测这些不利情况对其作出反应,并从其造成的伤害中恢复,从而保护其关键能力(和相关资产)免受伤害。这些不利事件和条件中的每一个都与以下次要质量特征之一有关:鲁棒性、安全性、网络安全(包括防篡改)、军事生存能力、能力、寿命和互操作性。我们接下来会在本系列的第二篇文章中展开讨论。

↑图1:系统韧性定义中的关键概念

图2显示了通过韧性控制的有序应用来管理不良事件并恢复的时间线。

↑图2:韧性时间线示例

要理解系统韧性的全部范围和复杂性,重要的是要理解前文定义的关键词含义,以及它们在上图中的关系。

保护由以下四个功能组成:

① 抵御能力是指系统在不利事件或条件下被动防止或最大限度减少伤害的能力。被动防御的韧性技术包括模块化架构(该架构可防止模块之间的故障传播)、避免单点失败,以及电气设备的屏蔽、使计算机和网络设备免受电磁脉冲(EMP)的干扰。

检测是系统主动检测(通过检测技术)的能力:

  • 关键能力的丧失或降级
  • 对实现关键能力所需资产的危害
  • 可能对关键能力或相关资产造成伤害的不利事件和条件

② 反应是指系统对正在进行的不良事件的发生做出积极反应或对不良条件的存在做出反应的能力(通过反应技术实现反应)。在检测到逆境时,系统可能会停止或避免不利事件,消除不利条件,从而消除或最大限度地减少进一步的伤害。反应技术包括采用异常处理、降级操作模式以及冗余投票等

③ 恢复是指系统在不良事件结束后主动从伤害中恢复的能力(通过恢复技术实现恢复)。恢复可以是完全的,即系统恢复到完全运行状态,所有损坏/销毁的资产都已修复或更换。恢复也可以是部分恢复(例如,使用冗余资源恢复全部服务而不进行更换/修复)或最小恢复(例如仅提供有限服务的降级模式操作)。恢复还可能包括系统的演变或调整(例如,通过重新配置自身),以避免未来发生不良事件或条件。

系统功能是系统在逆境造成中断的情况下必须继续提供的关键服务。

④ 资产是有价值的物品,必须加以保护,使其免受不利事件和条件造成的伤害,因为它们实现了系统的关键功能。在所有不利事件和条件下,通常不可能完全防止对所有资产造成损害。因此,通常会对资产进行优先级排序,以便检测、反应和恢复首先集中精力保护最重要的资产。与韧性相关的资产包括:

  • 系统组件:系统的组件子系统、硬件、软件(如应用程序、基础设施、操作系统和固件)、网络(如设备、无线电和电缆)和设施
  • 系统数据:系统存储、生成和操作的数据
  • 系统外部资产:系统负责保护其免受伤害的任何系统外部资产(如人员、财产、环境、资金和声誉)

对这些资产造成的危害包括:

  • 对系统功能的危害:服务完全或部分丧失以及服务被盗
  • 对系统组件的危害:硬件或软件的破坏、损坏、盗窃或未经授权的逆向工程
  • 对数据的危害:访问丢失(可用性违规)、损坏(完整性违规),未经授权的披露(机密性和匿名性违规)和交易抵赖(不抵赖违规),以及关键程序信息的逆向工程(CPI)(防篡改违规)
  • 对系统外部资产的危害:资金损失、声誉损失、业务损失以及环境损害或破坏

不良事件是指由于其压力而可能通过对相关资产造成伤害来破坏关键能力的事件。这些不良事件(及其相关质量属性)包括以下情况的发生:

  • 不利的环境事件,如系统外部电力损失以及地震或野火等自然灾害(鲁棒性,特别是环境耐受性)
  • 输入错误,如操作员或用户错误(鲁棒性,特别是容错性)
  • 满足要求的外部可见故障(鲁棒性,特别是故障容限)
  • 事故和未遂事故(安全)
  • 网络安全/篡改攻击(网络安防与反篡改)
  • 恐怖分子或敌对军事力量的人身攻击(生存能力)
  • 负载过大导致的负载峰值和故障(容量)
  • 过度老化和磨损导致的故障(寿命)
  • 通信丢失(互操作性)

不利条件是指由于其压力性质而可能干扰或导致关键能力中断的条件。这些不利条件包括以下情况的存在:

  • 恶劣的环境条件,如过高的温度和恶劣的天气(鲁棒性,特别是环境耐受性)
  • 系统内部故障,如硬件和软件缺陷(鲁棒性,特别是容错性)
  • 安全隐患(安全)
  • 网络安全威胁和漏洞(网络安防和反篡改)
  • 军事威胁和弱点(生存能力)
  • 过载(容量)
  • 过度老化和磨损(长寿)
  • 降级通信(互操作性)

值得注意的是,防篡改(AT)是一种特殊情况,乍一看可能与韧性无关。AT的目标是防止对手对机密软件等关键程序信息(CPI)进行逆向工程。防篡改专家通常认为,在这种情况下,对手将获得包含要进行逆向工程的CPI的系统的物理占有权,确保系统在篡改的情况下继续运行是无关紧要的。然而,篡改也可以远程尝试(即,无需首先获得系统的占有权)。在对手无法访问的情况下,AT对策可能是检测对手远程尝试访问和复制CPI,然后通过将CPI归零进行响应,此时系统将不再可操作。因此,远程篡改确实具有韧性影响。

02

总结与预告

本文阐述了系统韧性质量属性的详细而细致的定义,是关于系统韧性系列文章的开篇。在本系列的第二篇文章中,我将就这个定义阐明系统韧性与其他密切相关的质量属性之间的关系。敬请期待。

来源地址:https://blog.csdn.net/EasyOps_DevOps/article/details/133795993

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

系统韧性研究(1)| 何谓「系统韧性」?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Go语言在Linux系统下的适用性研究

Go语言作为一种高效的编程语言,其在构建各种应用程序时展现了出色的性能和可靠性。与此同时,Linux系统作为一种稳定且广泛应用的操作系统,在服务器端和嵌入式设备中得到了广泛应用。本文将探讨Go语言与Linux系统之间的兼容性,并给出一些具体
Go语言在Linux系统下的适用性研究
2024-02-27

操作系统性能监控:行业案例研究

本文通过行业案例研究,探讨了操作系统性能监控的重要性,并演示了如何使用Prometheus和Grafana进行高效监控。
操作系统性能监控:行业案例研究
2024-03-02

信息系统项目管理师项目可行性研究与评估考点

  信息系统项目管理师项目可行性研究与评估考点有哪些?为了方便考生及时有效的备考,编程学习网小编为大家精心整理了软考信息系统项目管理师项目可行性研究与评估考试知识点,供大家参考和学习。如想获取更多计算机软件水平考试的模拟题及备考资料,请关注编程学习网网站的更新。  第4章 项目可行性研究与评估  项目的可行性研究是项目立项前的
信息系统项目管理师项目可行性研究与评估考点
2024-04-18

系统升级后如何优化系统性能?

系统升级后如何提高系统性能?
系统升级后如何优化系统性能?
2024-02-05

win10系统如何盘查错提升系统性能

这篇文章给大家分享的是有关win10系统如何盘查错提升系统性能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、打开本地磁盘右键菜单,点击“属性”。2、在属性窗口中切换到“工具”标签,点击查错里的“检查”按钮。3
2023-06-28

Go语言在Linux系统中的特性深度探究

Go语言是一种开源编程语言,由Google开发并于2009年发布。它旨在提高程序员的开发效率,同时也具有高效的性能和强大的并发特性。Go语言在Linux操作系统中的特性是其强大的兼容性和优秀的性能表现。本文将深入探讨Go语言在Linux操作
Go语言在Linux系统中的特性深度探究
2024-02-26

win10系统性能如何优化

要优化Win10系统的性能,可以采取以下几个步骤:1. 清理硬盘空间:删除不需要的文件和程序,清理临时文件,释放硬盘空间。2. 关闭自启动程序:在任务管理器中禁用不必要的自启动程序,减少开机启动时的负担。3. 更新驱动程序:及时更新硬件的驱
2023-08-22

如何优化Vista系统性能

本篇文章给大家分享的是有关如何优化Vista系统性能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。解决Vista狂读硬盘现象:a. 取消磁盘碎片整理b. 关闭Windows D
2023-06-14

CentOS中如何优化系统性能

以下是一些优化 CentOS 系统性能的方法:禁用不必要的服务和进程:通过查看并禁用不必要的服务和进程,可以减少系统资源的使用。定期清理系统日志:定期清理系统日志可以释放磁盘空间,提高系统性能。使用高效的文件系统:选择合适的文件系统可以提高
CentOS中如何优化系统性能
2024-03-13

麒麟操作系统中的系统更新和维护如何提升系统稳定性

麒麟操作系统中的系统更新和维护可以通过以下几个方面来提升系统稳定性:1. 及时更新系统补丁:麒麟操作系统的开发者会定期发布系统补丁,修复已知的漏洞和问题。用户需要及时更新系统,以获取最新的修复和安全增强功能,从而提高系统的稳定性。2. 优化
2023-10-10

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录