软件架构实践阅读笔记3
因为在学习质量属性相关知识,所以我选择对本书的第五章进行阅读,了解实现质量属性的各种战术。同时作为对以前知识的回顾。
可用性战术
错误检测:广泛用于识别错误的3个战术是命令/响应(ping/echo)、 心跳和异常。
命令/响应。一个组件发出一个命令,并希望在预定义的时间内收到一个来自审查组件的响应。可以把该战术用在共同负责某项任务的一组组件内。 客户机也可以使用这种战术。
心跳(dead man计时器)。在这种情况下,一个组件定期发出一个心跳消息,另一个组件收听该信息。如果心跳失败,则假定最初的组件失败,并通知错误纠正组件。心跳还可以传递数据。
异常。识别错误的一个方法就是遇到了异常,当识别出了第4章所讨论的错误类中的某一个时,就会出现异常。该异常处理程序通常在引入该异常的相同进程中执行。
错误恢复:错误恢复由准备恢复和修复系统两部分组成。
表决。运行在冗余处理器上的每个进程都具有相等的输入,它们计算发送给表决者的一个简单的输出值。如果表决者检测到单处理器的异常行为,那么,就中止这一行为。
主动冗余(热重启)。所有的冗余组件都以并行的方式对事件做出响应。因此,它们都处在相同的状态。仅使用一个组件的响应(通常是做出响应的第一个组件),丢弃其余组件的响应。错误发生时,使用该战术的系统的停机时间通常是几毫秒,因为备份是最新的,所以恢复所需要的时间就是切换时间。
被动冗余(暖重启/双冗余/三冗余)。一个组件(主要的)对事件做出响应,并通知其他组件(备用的)必须进行的状态更新。当错误发生时,在继续提供服务前,系统必须首先确保备用状态是最新的。
备件。备用件是计算平台配置用于更换各种不同的故障组件。
shadow操作。以前出现故障的组件可以在短时间内以“shadow模式"运行,以确保在恢复该组件之前, 模仿工作组件的行为。
检查点/回滚。检查点就是记录所创建的一致状态, 或者是定期进行,或者是对具体事件做出响应。
错误预防:从服务中删除。事务。进程监视器
可修改性战术:
局部化修改:
维持语义的一致性。语义的一致性指的是模块中 责任之间的关系。目标是确保所有这些责任都能够协同工作,不需要过多地依赖其他模块。该目标是通过选择具有语义一致性的责任来实现的。
预期期望的变更。
泛化该模块。使一个模块更通用能够使它根据输入计算更广泛的功能。
限制可能的选择。
防止连锁反应;推迟绑定时间;
性能战术:
资源需求:提高计算效率。减少计算开销。管理事件率。控制采样频率。限制执行时间。限制队列大小
资源管理:引入并发。维持数据或计算的多个副本。增加可用资源。
资源仲裁
安全性战术:
抵抗攻击:身份验证。用户授权。数据机密性。维护完整性。限制暴露信息。限制访问
检测攻击
从攻击中恢复
可测试性战术:可测试性战术的目标是允许在完成软件开发的一个增量后,较轻松地对软件进行测试
易用性战术:
运行时战术:维持任务/用户/系统的一个模型
设计时战术:将用户接口与应用的其余部分分离