【愚公系列】软考高级-架构设计师 105-设 计 、 测 试 、 评 价

在这里插入图片描述

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏


🚀前言

设计、测试和评价在软件开发过程中扮演着至关重要的角色,它们相互交织,共同确保软件的质量、可靠性和用户体验。

🚀一、设 计

🔎1.提高系统可靠性的技术

提高系统可靠性的技术可以分为避错(排错)技术和容错技术。

🦋1.1 避错技术

避错技术是通过多种手段在系统正式运行之前避免、发现和改正错误。主要方法包括:

  • 技术评审:通过专家评审,识别和修正设计中的问题。
  • 系统测试:在不同阶段进行详细的测试,发现并修正错误。
  • 正确性证明:使用数学方法和工具,证明系统的正确性。

🦋1.2 容错技术

容错技术是指系统在运行过程中发生一定的硬件故障或软件错误时,仍能保持正常工作而不影响正确结果的一种性能或措施。其核心思想是通过冗余来消除故障的影响。

🦋1.3 软件容错方法

冗余技术

冗余是指在正常系统运行所需的基础上加上一定数量的资源,包括信息、时间、硬件和软件。冗余是容错技术的基础,通过冗余资源的加入,可以使系统的可靠性得到较大的提高。主要的冗余技术有:

  1. 结构冗余:

    • 静态冗余:在系统设计中预先配置额外的硬件或软件资源。
    • 动态冗余:在运行过程中动态分配冗余资源。
    • 混合冗余:结合静态和动态冗余的优点,提供更高的可靠性。
  2. 信息冗余:

    • 通过增加冗余信息(如校验码、错误检测码)来检测和纠正错误。
  3. 时间冗余:

    • 通过重复执行操作或延长处理时间来确保正确性。
  4. 冗余附加:

    • 在设计中增加冗余功能模块,以备故障时使用。

软件容错的主要方法是提供足够的冗余信息和算法程序,使系统在实际运行时能够及时发现程序设计错误并采取补救措施,以提高系统可靠性,保证整个系统的正常运行。

🔎2.软件容错技术

🦋2.1 N版本程序设计

N版本程序设计的思想是用N个具有相同功能的程序同时执行一项计算,并通过多数表决来选择正确的结果。其关键要点包括:

  • 独立设计:N个版本的程序必须由不同的人独立设计,使用不同的方法、设计语言、开发环境和工具来实现。
  • 减少相关错误:通过独立设计,减少N个版本的程序在表决点上出现相关错误的概率。

在这里插入图片描述

🦋2.2 恢复块设计(动态冗余)

恢复块设计也称为动态冗余或主动冗余,其目标是通过故障检测、故障定位及故障恢复等手段实现容错。其主要思路包括:

  • 多重模块待机储备:系统中预备多个模块,当检测到某工作模块出现错误时,用一个备用模块替代并重新运行。
    • 热备份系统(双重系统):备用模块在待机时与主模块一样工作。
    • 冷备份系统(双工系统、双份系统):备用模块在待机时不工作,只有在需要时才激活。

在这里插入图片描述

🦋2.3 防卫式程序设计

防卫式程序设计是一种不采用传统容错技术的实现软件容错的方法,其基本思想是通过在程序中包含错误检查代码和错误恢复代码,确保程序在发生错误时能够撤销错误状态并恢复到一个已知的正确状态。其实现策略包括:

  • 错误检测:在程序中加入代码以检测可能的错误。
  • 破坏估计:评估错误对程序的影响。
  • 错误恢复:一旦发生错误,程序能够撤销错误状态并恢复到正确状态。

🔎3.双机容错技术

双机容错技术是一种结合了软硬件的容错应用方案,通常由两台服务器和一个外接共享磁盘阵列以及相应的双机软件组成。其主要特点和工作模式如下:

  • 心跳机制

    • 双机容错系统采用“心跳”方法来保证主系统和备用系统之间的联系。
    • 心跳是指主从系统之间按照一定的时间间隔发送通信信号,以表明各自的运行状态。
    • 一旦心跳信号表明主系统发生故障,或者备用系统无法收到主系统的心跳信号,高可用性管理软件会认为主系统故障,从而立即将系统资源转移到备用系统,确保系统正常运行和网络服务不间断。
  • 工作模式

    • 双机热备模式:备用系统在待机时与主系统一样工作,一旦主系统出现故障,备用系统立即接管。
    • 双机互备模式:两台系统互为备份,彼此监控对方的状态,一旦一方故障,另一方接管其任务。
    • 双机双工模式:两台系统同时工作,互为备份,能同时处理任务,提供更高的性能和容错能力。

🔎4.集群技术

集群技术将多台计算机组织起来进行协同工作,以提高系统的可用性和可靠性。其主要特点和分类如下:

  • 特点

    • 可伸缩性:系统可以根据负载需求进行扩展。
    • 高可用性:系统通过冗余和故障转移机制保证高可用性。
    • 可管理性:集群系统提供集中管理和监控工具,简化系统管理。
    • 高性价比:通过使用多台普通计算机实现高性能和高可用性,降低成本。
    • 高透明性:集群系统对用户透明,用户感觉不到系统内部的复杂性。
  • 分类

    • 高性能计算集群(HPC):主要用于科学计算和数据处理,多个计算节点协同工作以提高计算能力。
    • 负载均衡集群:通过将任务分配到不同的服务器上来达到负载均衡,适用于Web服务器、数据库服务器等应用。
    • 高可用性集群:通过冗余和故障转移机制确保系统的高可用性,适用于关键业务系统和服务。

🔎5.负载均衡

负载均衡是集群系统中的一项重要技术,主要用于提高集群系统的整体处理能力和系统可靠性,最终目的是加快集群系统的响应速度,提高客户端访问的成功概率。集群的最大特征是多个节点的并行和共同工作,因此,如何让所有节点承受的负荷平均,不出现局部过大负载或过轻负载的情况,是负载均衡的重要目的。

🦋5.1 常用的负载均衡实现技术

  1. 基于特定软件的负载均衡(应用层)

    • 原理:使用网络协议中的重定向功能,例如基于HTTP重定向服务。
    • 实现:服务器使用HTTP重定向指令,将客户端请求重新定位到另一个服务器位置。服务器返回一个重定向响应,客户端确认新地址后重发请求,从而实现负载均衡。
  2. 基于DNS的负载均衡(传输层)

    • 原理:在DNS服务器中为同一个主机名配置多个IP地址。
    • 实现:DNS服务器在应答DNS查询时,按照顺序返回不同的IP地址,将客户端的访问引导到不同的节点上,使得不同的客户端访问不同的节点,从而实现负载均衡。
  3. 基于NAT的负载均衡

    • 原理:将一个外部IP地址映射为多个内部IP地址。
    • 实现:对每次连接需求动态地转换为一个内部节点的地址,将外部连接请求引导到转换得到地址的那个节点上,从而实现负载均衡。
  4. 反向代理负载均衡

    • 原理:将来自Internet上的连接请求以反向代理的方式动态地转发给内部网络上的多个节点。
    • 实现:反向代理服务器接收到请求后,根据负载均衡策略选择一个内部节点进行处理,从而实现负载均衡。
  5. 混合型负载均衡

    • 原理和实现:综合使用多种负载均衡技术,结合应用层、传输层和网络层的不同方法,来实现更高效的负载均衡。

🚀二、 测 试 、 评 价

🔎1.软件可靠性测试

软件可靠性测试是为了验证和提升软件系统的可靠性,确保其在预期的操作环境中能够稳定运行。该过程由以下主要活动组成:确定可靠性目标、开发运行剖面、设计测试用例、实施测试、以及分析测试结果。

测试步骤

  1. 定义软件运行剖面

    • 目的:为软件的使用行为建模,准确反映软件在实际使用中的操作情况。
  2. 设计可靠性测试用例

    • 步骤:基于定义的运行剖面,设计具体的测试用例,确保覆盖所有预期的使用场景。
  3. 实施可靠性测试

    • 执行:按照设计的测试用例进行实际操作,记录软件在测试过程中出现的各种失效情况。

🔎2.软件可靠性评价过程

  1. 选择可靠性模型

    • 考虑因素
      • 模型假设的适用性
      • 预测的能力与质量
      • 模型输出值能否满足可靠性评价需求
      • 模型使用的简便性
  2. 收集可靠性数据

    • 数据类型:主要是软件失效数据。
    • 数据收集阶段:在软件测试和实施阶段收集。
    • 解决方法
      • 及早确定所采用的可靠性模型
      • 制订可实施性较强的可靠性数据收集计划
      • 重视软件测试数据的整理和分析
      • 充分利用数据库完成可靠性数据的存储和统计分析
  3. 可靠性评估和预测

    • 评估目标:判断是否达到了可靠性目标,如果未达到,需要评估再投入多少资源;预测软件在实际运行一段时间后(如一年)能否达到预期的可靠性水平。
    • 辅助方法
      • 失效数据的图形分析法
      • 试探性数据分析技术

🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: log4j漏洞是指Apache Log4j 2.x版本中的一个严重安全漏洞(CVE-2021-44228),攻击者可以利用该漏洞在受影响的应用程序中执行任意代码,导致系统被入侵、数据泄露等问题。为了是否受到该漏洞的影响,可以按照以下步骤进行: 1. 确认应用程序使用了Log4j 2.x版本,可以在应用程序的pom.xml或gradle文件中查看相关依赖。 2. 使用以下命令检查是否受到漏洞影响: ``` java -jar log4j-core-2.16.0.jar "dns:[YOUR_DOMAIN_NAME]" -t ``` 其中,将 "dns:[YOUR_DOMAIN_NAME]" 替换为你的域名。如果应用程序受到漏洞影响,会返回一串类似于以下的信息: ``` 2021-12-09 11:54:45,784 main ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.SocketAppender for element Socket. java.lang.IllegalArgumentException: hostname can't be null ``` 3. 如果结果表明应用程序受到漏洞影响,需要及时升级Log4j版本,可以升级到2.16.0及以上版本,或者安装补丁程序进行修复。 4. 在升级或修复之前,可以采取临时措施来缓解漏洞影响,例如在应用程序的配置文件中添加以下内容: ``` log4j2.formatMsgNoLookups=true ``` 这个置将禁止Log4j使用JNDI和相关的Lookups功能,可以避免漏洞被利用。 总之,及时升级Log4j版本是防范该漏洞的最好方法。在升级之前,需要进行以确保应用程序是否受到漏洞影响。 ### 回答2: log4j漏洞步骤主要包括以下几个方面: 1. 确认应用是否使用log4j:首先,需要确认应用程序是否使用了log4j作为日志记录工具。可以查看应用程序的配置文件、代码库或者查找特定的log4j依赖包以确认。 2. 判断应用程序是否受到漏洞的影响:根据所使用的log4j版本,判断应用程序是否受到漏洞的影响。可以查看log4j的版本号以及是否包含漏洞修复的补丁。 3. 模拟攻击向量进行:通过构造恶意的日志记录,例如含有特殊的JNDI注入代码或者远程代码执行代码的日志信息,然后观察应用程序的日志记录文件是否产生了相应的远程连接或者执行迹象来判断应用程序是否受到漏洞的影响。 4. 检应用程序的安全措施:应用程序的防御措施,例如应用程序是否进行了日志记录的合理限制,以及是否禁止了远程日志记录功能等。 5. 进行漏洞修复并进行:如果应用程序受到log4j漏洞的影响,建议及时更新至最新版本的log4j,并对修复后的应用程序进行重新,确认漏洞是否已成功修复。 需要注意的是,在进行log4j漏洞时,应确保在合适的环境下进行,避免对生产环境或者正式运行的应用程序造成不必要的损失。同时,建议遵循合规和法规要求,避免违规的安全行为。 ### 回答3: log4j漏洞是为了检和验证系统中是否存在log4j漏洞,以下是一种常见的log4j漏洞步骤: 1. 查看系统中是否使用了log4j:首先,我们需要确认系统是否使用了log4j作为日志记录框架。可以查看系统代码或者依赖项中是否有log4j的相关信息。 2. 确认log4j版本:确定系统中使用的log4j版本,因为漏洞主要存在于log4j 2.x的版本中。可以检查相关代码或者依赖项的pom.xml文件中是否包含log4j的版本信息。 3. 下载并编译恶意代码:根据确认的log4j版本,从官方或者其他可信源下载相应版本的log4j漏洞代码。然后通过编译将恶意代码生成可执行的payload。 4. 部署恶意代码:将生成的恶意代码部署到目标系统中,可以是通过常规的软件部署方法,也可以通过代码注入等方式。 5. 触发恶意代码:根据恶意代码的具体和用途,触发恶意代码的执行。可以通过发送特定请求、调用特定接口或者模拟用户操作等方式触发。 6. 监日志记录行为:观察系统的日志记录行为,包括日志文件的生成、内容的变化等。查看是否有漏洞利用的迹象,如恶意请求被记录等。 7. 上报并修复漏洞:一旦发现系统受到log4j漏洞的影响,应立即上报给相关安全人员,并尽快采取修复措施,如升级log4j到最新版本、修改配置文件等。 需要注意的是,时应遵守法律法规和组织规定,合法授权并仔细的风险和影响。此外,建议在之前先创建备份,并在安全环境中进行以减少风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚公搬代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值