52浙江大学王灿《软件体系结构》视频课程5-可用性和可性设计省公开课一等奖全国示范课微课金奖课_第1页
52浙江大学王灿《软件体系结构》视频课程5-可用性和可性设计省公开课一等奖全国示范课微课金奖课_第2页
52浙江大学王灿《软件体系结构》视频课程5-可用性和可性设计省公开课一等奖全国示范课微课金奖课_第3页
52浙江大学王灿《软件体系结构》视频课程5-可用性和可性设计省公开课一等奖全国示范课微课金奖课_第4页
52浙江大学王灿《软件体系结构》视频课程5-可用性和可性设计省公开课一等奖全国示范课微课金奖课_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实现质量属性(1)1/25实现质量属性上节课讨论了各种系统质量属性,却没有谈及怎样实现这些质量属性质量属性实现依赖于我们称之为“战术”基本构架决议给定一个质量属性,“战术”帮助构架师使用对应构架策略或模式来进行设计,达成响应质量属性质量属性需求构架决议2/25战术什么使得不一样设计表现出不一样质量特征可移植性高性能可集成性“战术”是影响质量属性响应控制设计决议战术集合系统设计有决议集合组成有些决议确保系统功效实现有些决议帮助控制质量属性-“战术”“战术”是构架师所使用设计方法3/25战术示例一个经典战术示例是经过“引入冗余”来提升系统可用性这往往意味着系统中要有响应同时机制该示例揭示战术能够深入被精练比如:冗余战术能够被深入被精练为数据冗余和计算冗余,通常我们以层次结构形式组织战术模式是战术打包4/25可用性战术可用性回顾定义故障VS.错误α=平均正常工作时间/(平均正常工作时间+平均修复时间)可用性战术将阻止错误发展成故障或将错误影响限制在一定范围内,从而使修复成为可能保持可用性方法通常包含:一些冗余一些检测故障监控机制一些恢复机制控制可用性战术错误错误被屏蔽或系统被修复5/25错误检测战术命令/响应(Ping/echo)层次形式组织“命令/响应”错误检测机制心跳(“死人计时器”)一个组件定时发出一个心跳消息,另一个组件接听该消息异常/中止经过抛出异常来识别错误,异常处理程序通常在同一进程内捕捉并处理异常6/25错误恢复战术错误恢复通常由两部分组成准备恢复恢复系统惯用准备和恢复战术表决主动冗余被动冗余备件重新引入7/25表决战术(1)运行在冗余处理器上每个进程都含有相等输入,它们计算发给表决器一个简单输出值。假如表决器检测到单个处理器异常行为,那么就中止这一行为惯用表决算法多数规则首选组件8/25表决战术(2)表决战术能够用于纠正算法错误或处理器错误,或者某个模块或组件错误假如出现故障会带来严重后果,则冗余组件可能是多样每个冗余组件软件由不一样小组开发在不一样平台上执行...9/25主动冗余(热开启)战术全部冗余组件在开启时候同时,以并行方式对时间作出响应,因而它们都处于相同状态。通常,作出响应第一个组件结果被采取,其它响应被丢弃组件间同时是经过将传递给任何冗余组件消息发送给全部冗余组件发生错误时,使用该战术系统停机时间通常是几毫秒恢复时间就是组件间切换时间,因为冗余组件间状态一致,备份都是最新在高可用性分布式系统中,冗余可能在通信路径上10/25被动冗余战术一个组件(主组件)对事件作出响应,并通知其它组件(备用组件)它们必须进行状态更新同时是主组件责任,它能够经过对备用组件原子广播来确保同时当系统发生错误时首先要确保备用组件状态时最新该战术依赖与备用组件对工作进行可靠接管11/25备件战术在备件战术中,配置有对应备件平台来取代各种出故障组件当故障出现时,备件必须开启并进行对应配置,对状态进行初始化,才能替换出故障组件进行同时并对故障组件进行接管时,往往使用检验点(checkpoint)+日志(logging)技术12/25重新引入战术该战术依赖于对发生故障组件进行纠正后重新引入shadow操作:以前出现故障组件在短时间内以“shadow模式”(类似于测试模式)运行,以确保它能够胜任工作组件要求状态再同时:重新引入后,最好能用一条消息就将状态刷到最新检验点/回滚:使用类似于数据库中恢复机制技术13/25错误预防战术从服务中删除从操作中删除系统一个组件,以执行一些活动来预防预期发生故障。比如:重新开启组件,以防内存泄漏造成故障发生事务处理几个有序步骤绑定,是这些步骤都能被完成或撤消,确保一致性,预防冲突进程监视器检测到进程中错误后,将之删除并重新创建一实例并初始化状态14/25可用行战术层次结构可用性命令/响应心跳异常表决主动冗余被动冗余备件从服务中删除事务进程监视器Shadow状态再同时检验点/回滚准备恢复和修复故障检测重新引入错误预防故障故障被屏蔽或修复15/25可修改性战术目标:控制实施、测试和布署修改时间和成本提升可修改性主要方法局部化修改预防连锁反应

延迟绑定时间控制可修改性战术变更抵达在预算范围内实施修改测试修改布署修改16/25局部化修改(1)普通来说(尽管不是非常准确),修改模块越少,修改成本就越低这组战术目标是在设计期间为模块分配责任,以把预期变更限定在一定范围内维持语义一致性语义一致性指模块中责任间关系。目标是确保这些责任能够协同工作,不需过多依赖其它模块“抽象通用服务”预期期望变更考虑预想变更为责任或功效分配提供指导实际使用中,该战术实施会有困难,因为极难预期全部变更17/25局部化修改(2)泛化模块泛化模块(使一个模块愈加通用)能够使它依据依据输入计算更广泛功效能够将一个模块输入看成是该模块定义一个语言能够在语言上应对修改,而无须去修改模块限制可能选择修改(尤其在产品线中)范围可能非常大,所以可能会影响很多模块限制可能选择能够见地这些修改造成影响18/25连锁反应&模块依赖性修改所产生连锁反应就是需要改变该修改并没有直接影响到模块比如:模块B依赖于模块A,那么修改了模块A后,有可能对应必须修改模块B连锁反应原因是模块间依赖性,常见依赖性包含语法数据:要使B能正确编译和执行,由A产生并由B使用数据语义必须与B假定一致服务:要使B能正确编译和执行,由A提供并由B调用服务署名必须与B假定一致语义数据&服务:要使B能正确执行,由A提供并由B使用数据或调用服务必须与B假定一致19/25模块依赖性(2)次序数据:要使B能正确执行,它必须以一个固定次序接收由A产生数据(比如:包头要比包体先接收)控制:要使B能正确执行,A必须在一定时间限制内执行A一个接口身份A接口身份(名称或句柄)要与B假设一致A运行时位置要使B能正确执行,A运行时位置必须与B假定一致A提供服务/数据质量A存在A资源行为20/25预防连锁反应(1)下面战术,并不能一定组织语义变更造成连锁反应信息隐藏将某个模块责任分解成更小部分,并选择哪些部分为公有(可见),哪些为私有(隐藏)维持现有接口假如B依赖于A一个接口名或署名,则维持该接口和其语法能够使B保持不变通常能够用以下战术来到达这点添加接口添加适配器(提供原始A署名)提供一个占位程序A(stub)限制通讯路径与一个被修改模块交互模块越少,被影响到模块也越少21/25预防连锁反应(2)使用中间件:A

中间件

B(非语义型依赖)数据(语法):存放库充当数据生成者和使用者之间中间件服务:façade、桥、mediator、代理、工厂模式等都能将服务语法从一个形式转为另一个形式A接口身份:使用Broker模式A运行时位置:使用名称服务器A资源行为或A控制资源:使用资源管理器A存在:使用工厂模式22/25延迟绑定时间前面两类战术目标是使实现修改所要求改变模块数量最少,不过可修改性同时也该包含:布署时间允许非开发人员进行修改推迟绑定时间支持这两种场景,不过需要额外基础结构支持静态绑定VS.动态绑定23/25延迟绑定时间策略运行时注册支持软件实体即插即用,不过需要管理注册模块配置文件在开启时进行参数设置多态性允许方法调用后期绑定,从而使对象有不一样动态行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论