版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件架构质量评估方案1质量属性在系统设计和开发过程中,我们比拟容易关注系统的功能维 度,例如有没有实现预期功能,输入参数和输出参数是否匹配等 等,这是比拟容易衡量的。但是我们不能就此止步,因为满足功能是系统的基本要求, 还需要关注系统的非功能维度,例如系统性能是否优秀,代码可 扩展性如何,出现异常是否可以自动降级等等,这些指标决定了 系统能否提供高质量的服务。我之前在文章结构化思维如何指导技术系统优化提到了 三个质量属性:高性能、高可用、高扩展。本文我们可以充实为 六个质量属性:性能、可用性、可修改性、可靠性、平安性、易 用性。性能单位时间内可以做多少事情,做完单位数量的事情需要多长时间口用性
2、系统正常运行时间占总运行时间的比例可修改性可扩展性系统扩展新构件时对其它构件的影响程度可维护性系统修改旧构件时对具它构件的影响程度结构重组重新组织构件关系的难易程度可移植性在不同硬件平台、编程语言、操作系统间移植的难易程度可靠性容错性和健壮性,系统面对错误输入仍能保证正确输出的能力平安性系统防止非法用户访问的能力易用性系统使用的难易程度(7)出现异常引导用户至错误页面,不能展示异常栈信息(8)对于球员信息配置功能的灵活度尚未达成共识,影响了 系统可修改性(9)对于球员比赛实时收集响应时间的要求,影响了系统数 据存储设计(10)主教练提出了训练指标新模式,影响了系统性能和可 修改性根据上述场景生
3、成质量属性效用树,(1)属于性能,(2)(3) 属性可用性,(4)属于可修改性,(5)属于平安性,(6)属于易用 性,(7)属于可靠性:我们再根据这些场景分析系统的风险点、敏感点、权衡点。 风险点是指某些操作会给系统带来隐患和风险,(8)属于风险点。 敏感点是指为了实现某个特定质量属性,一个或多个系统组件所 具有的特性,(9)属于敏感点。权衡点是指某些操作会影响系统 的多个质量属性,(10)属于权衡点。第三个阶段是测试阶段,根据足球运发动信息管理系统特性, 我们首先确定场景优先级,由高到低分别是:性能、可靠性、可 修改性、平安性、可用性、易用性。架构权衡分析方法所谓权衡在此得到了表达,质量属性
4、每个 都很重要,但是根据系统特点需要对质量属性有优先级排序,架 构设计时需要所有权衡和折中。确定了优先级之后,我们需要具体阐述针对每个质量属性系 统采取了哪些方案,例如提升性能使用了缓存,提升可修改性使 用了策略模式,提升可靠性使用了统一异常处理框架等等,具体 方案可以参考本文第一章节。第四个阶段是报告阶段,我们将评估过程和结果都汇总整理 成文档,其中包括质量属性效用树、风险点、敏感点、权衡点和 每次评估会议纪要,以及最终的架构决策。3文章总结第一系统满足功能性需求是最基本的要求,作为架构师不能 就此止步,不仅应该关注功能性需求,还应该关注非功能性需求, 质量属性就是衡量系统质量的重要指标。第
5、二架构评估方法分为基于问卷、基于度量、基于场景的方 式,目前业内较为流行的是基于场景的评估方法,ATAM是一种优 秀的基于场景评估方法。第三ATAM以质量属性效用树为核心,帮助架构师识别工程风险点、敏感点、权衡点,指导架构师做出合理架构决策。性能如何定义性能有两个定义维度:第一个维度是单位时间内可以做多少 事情,第二个维度是做完单位数量的事情需要多少时间,常用以 下参数进行量化:QPS:每秒处理请求数TPS:每秒处理事务数并发数:同一时刻处理请求数/事务数响应时间:系统对请求做出响应的时间并发数二QPS x RT1.2如何提升提升性能可以从两个维度思考,第一个维度是时间维度,从 事前、事中、事
6、后三个时间节点进行优化。事前是指在访问最开 始就拒绝无效流量。事中可以使用提高并发度(并发编程),增 加资源(服务器、分布式缓存、读写别离,分库分表),减少交互 (批量请求)等方案。事后是指数据分析需求可以放到离线数据 中心进行,不要放在主应用和主数据库进行。第二个维度是层次维度,每一层都可以进行优化。系统架构 一般分为数据层、缓存层、服务层、网关层、客户端、代理层, 每一层都可以进行优化,每一层都可以按照事前、事中、事后进 行优化,而不是一提到优化就是加缓存,应该更加全面地思考。1. 2可用性. 1如何定义可用性是指系统正常运行时间占总运行时间比例,业界常用X个9指标进行量化,例如可用性到达
7、5个9,那么全年系统不 可用时间只有5分钟:如何提升(1)非线性我们从另一个概念理解可用性:非线性,这个概念在生活中 无处不在。假设要赶早上8点钟的火车,如果6:30出发可以在7:00到 达车站,所以得到一个结论:只要30分钟就可以到达车站。如果早上睡晚一点7: 15出发,那么按照预期7:45可以到达 车站。但是最可能的结果是错过这趟火车。因为正好遇上早高峰 导致至少需要1个小时才能到达车站。我们再分析一个互联网秒杀场景。假设秒杀系统当每秒30 个请求时,响应时间是10毫秒。如果按照线性思维可以做出如 下设计:每秒30个访问量响应时间10毫秒每秒300个访问量响应时间100毫秒每秒3000个访
8、问量响应时间1000毫秒如果按照这个思路做系统设计将会发生重大错误。因为当每 秒3000个访问量发生时,响应时间可能不是1000毫秒,而是可 能直接导致系统崩溃。这就是非线性,事物不是简单线性叠加关系,当到达某个临界值时会造成一种截然不同的结果。(2)提升策略冗余+自动故障转移最基本的冗余策略就是主从模式。原理是准备两台机器,部 署了同一份代码,在功能层面是相同的,都可以对外提供相同的 服务。一台机器启动提供服务,这就是主服务器。另一台机器启动 在一旁待命,不提供服务,随时监听主服务器的状态,这就是从 服务器。当发现主服务器出现故障时,从服务器立刻替换主服务 器,继续为用户提供服务。自动故障转
9、移策略是指当主系统发生异常时,应该可以自动 探测到异常,并自动切换为备用系统。不应该只依靠人工去切换 成,否那么故障处理时间会显著增加。降级策略当系统遇到无法承受的压力时,选择暂时关闭一些非关键的 功能,或者延时提供一些功能,把此刻所有的资源都提供给现在 最关键的服务。在秒杀场景中下订单就是最核心最关键的功能。当系统压力 将要到达临界值时,可以暂时先关闭一些非核心功能如查询功能。还有一种降级策略,当系统依赖的下游服务出现错误,甚至 已经完全不可用了,那么此时就不能再调用这个下游服务了,否那么可能导致雪崩。所以直接返回兜底方案,把下游服务直接降级。延时策略用户下订单成功后就需要进行支付。假设秒杀
10、系统下订单每 秒访问量是3000,有没有必要将每秒3000次访问量压力传递给 支付服务器?答案是没有必要。因为用户秒杀成功后可以稍晚付款,例如 可以跳转到一个支付页面,提示用户只要在10分钟内支付完成 即可。这样流量就被分摊至几分钟,有效保护了系统。技术架构还 可以使用消息队列做缓冲,让下游系统根据处理能力拉取消息。隔离策略物理隔离:应用分别部署在不同物理机、不同机房,资源之 间不会互相影响。线程隔离:不同类型的请求进行分类,交给不同的线程池处 理,当一类请求出现高耗时和异常,不影响另一类请求访问。1. 3可修改性1. 3. 1如何定义可修改性是指是否能够以较高的性价比对系统进行变更的 能力,
11、可以分为以下四种类型:可扩展性:系统扩展新构件时对其它构件的影响程度可维护性:系统修改旧构件时对其它构件的影响程度结构重组:重新组织构件关系的难易程度可移植性:在不同硬件平台、编程语言、操作系统间移植的难易程度如何提升可修改性最终还是在解决牵一发而动全身的复杂性问题,复 杂业务之所以复杂,一个重要原因是涉及角色或者类型较多,如 果平铺直叙地进行设计会出现if-else代码块,可读性和可修改 性都很低。从功能上完全可以实现业务需求,但是程序员不仅要满足功 能,还需要思考代码的可维护性。如果新增一种订单类型,或者 新增一个订单属性处理逻辑,那么我们就要在上述逻辑中新增代 码,如果处理不慎就会影响原
12、有逻辑。为了防止牵一发而动全身这种情况,设计模式中的开闭原那么 要求我们面向新增开放,面向修改关闭,我认为这是设计模式中 最重要的一条原那么。需求变化通过扩展,而不是通过修改已有代码实现,这样就 保证代码稳定性。扩展也不是随意扩展,因为事先定义了算法, 扩展也是根据算法扩展,用抽象构建框架,用实现扩展细节。标 准意义的二十三种设计模式说到底最终都是在遵循开闭原那么。4可靠性1如何定义可靠性包括容错性和健壮性,系统面对错误输入仍能保证正 确输出的能力,可以分为两种类型:系统可靠性和业务可靠性。系统可靠性是指面对出现基本错误的输入,系统能够识别和 拦截,而不是任由其在构件中传递,造成错误数据或者引
13、发系统 异常。例如空值引发的空指针异常,不应该出现在系统中。业务可靠性是指输入参数在基本校验通过的情况下,系统能 够进行业务校验,不会引发超出业务预期的输出结果。例如电商 系统中的超卖现象,重复创立订单现象都是业务可靠性较低的表 现。如何提升(1)拦截提升可靠性的关键是应该尽早在上层识别并拦截异常数据, 阻止其在构件中流动,防止产生系统异常和错误数据,尤其当产 生错误数据后,数据修复难度大。提升系统可靠性可以在服务入口增加判空校验、参数类型校 验、范围校验、合法枚举值校验等基本校验,一旦发现异常直接 拒绝。提升业务可靠性可以增强业务校验,例如库存预扣减,活动 有效期校验,参与活动次数校验,扣减
14、库存校验,分布式锁控制 并发等方案,如果校验规那么复杂可以引入规那么引擎进行条件组合, 不满足业务条件直接拒绝请求。(2)告警如果第一阶段没有将异常输入拦截成功,那么就要在发生异常时及时感知,异常分为系统异常和业务异常。系统异常是不允许出现的异常,例如空指针,操作数据库失 败等异常,一旦出现就要立即告警。业务异常可以分为以下类型:业务异常:单位时间出现X次需要告警延时监控:某指标单位时间内是否变化数据监控:单位时间数据指标是否正常5平安性与易用性平安性是指系统防止非法用户访问的能力,易用性是指系统 使用的难易程度,本文不展开论述,下一个章节会再提到。2架构评估方法1三种评估方法因为涉及到众多变
15、量和场景,所以评估一个复杂技术系统的 质量并不是一件容易的事情。业界有以下三种评估方法:第一是基于问卷的方式,通过问卷调查对系统比拟熟悉的相 关人员得到结论,这种方式主观性很强。第二是基于度量的方式,对系统指标完全量化,基于量化指 标评价系统,这种方式需要评估者对系统非常熟悉。第三种是基于场景的方式,筛选出系统的关键场景,根据系 统在不同场景中的表现进行评估,这种方式具有一定的主观性, 需要评估者对系统较为熟悉,这也是目前较为流行的架构评估方 法。架构权衡评估方法(ATAM)全称是Architecture Tradeoff Analysis Method,由卡梅隆大学软件工程协会提出,是一种基 于场景的架构评估方法,核心是结合质量属性效用树对系统进行 评价,确定风险点、敏感点、权衡点,并对系统架构做出决策和 折中。ATAM分为以下步骤,其中123为描述和介绍阶段,456为调 查和分析阶段,78为测试阶段,9为报告阶段。2 ATAM 实例本文以结合DDD讲清楚编写技术方案的七大维度足球运 发动信息管理系统为例看看ATAM如何实施。第一阶段是描述和介绍阶段,首先由架构师向大家介绍什么 是ATAM方法,其次由产品经理介绍开发足球运发动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 道路安全学习心得体会
- 护理人员职业道德培训
- 油库应急处理流程
- 初中历史教案反思
- 布艺扎染教案反思
- 白露主题班会教案
- 和的认识说课稿
- 文化创意承销协议书范本
- 水利工程机械施工合同
- 土建项目协议书范本
- 神经调节的基本方式 2024-2025学年高二生物同步课堂(人教版2019选择性必修1)
- 沥青路面施工组织设计
- 2024年新课标高考生物试卷(适用黑龙江、辽宁、吉林地区 真题+答案)
- 委托第三方公司代付款协议模板
- 幼儿园中班语言课件:《秋天的颜色》
- 护理敏感质量指标
- DZ∕T 0153-2014 物化探工程测量规范(正式版)
- 西方思想经典导读智慧树知到期末考试答案章节答案2024年湖南师范大学
- 小鲤鱼跳龙门阅读题(答案)
- SLT 533-2021 灌溉排水工程项目初步设计报告编制规程-PDF解密
- MOOC 数据结构与算法-北京大学 中国大学慕课答案
评论
0/150
提交评论