质量属性与架构评估
质量属性:
1.性能:指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件个数
代表参数:响应时间、吞吐量
设计策略:优先级调度、资源调度、增加计算资源
2.可用性: 是指系统能够正常运行的时间比例。
代表参数: 故障隔离时间
设计策略:冗余、心跳线
3.安全性: 指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力
设计策略:身份认证、限制访问、检测攻击、维护完整性、追踪审计
4.可修改性:是指能够快速的以较高的性能价格比对系统进行变更的能力
主要策略:信息隐藏、软件模块化、限制模块之间通信、使用中介和延迟绑定
5.可靠性:系统在错误面前维持系统的功能特性的基本能力,主要考虑容错性、健壮性
代表参数:MTTF、MTBF
设计策略:冗余、心跳线
6.功能性:是指系统所能完成所期望的工作的能力
7.可变性:指体系结构经扩充或变更而成为新体系结构的能力
8.互操作性:指系统与外界或系统与系统之间的相互作用能力
9.可测试性:指软件发现故障并隔离、定位其故障的能力特性,以及在一定的时间和成本前提下,进行测试设计、测试执行的能力。
10.易用性:衡量用户使用一个软件产品完成指定任务的难易程度。
架构评估:
风险点:系统架构风险是指架构设计过程中潜在的、有问题的架构决策所带来的隐患
敏感点:为了实现某种质量属性,一个或多个构件所具有的特性
权衡点:影响多个质量属性的特性,是多个质量属性的敏感点
评估方式:
- 基于问卷调查的方式 2. 基于度量的方式 3. 基于场景的方式
对比:
基于场景的方式:
确定应用领域的功能和软件架构的结构之间的映射
设计用于体现待评估质量属性的场景
分析软件架构对场景的支持程度
软件架构分析法(SAAM)
最初用于分析架构的可修改性,后扩展到其他质量属性
架构权衡分析法(ATAM)
在SAAM基础上发展而来、主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。ATAM 可以分为 4 个主要的活动阶段,包括需求收集、架构视图描述、属性模型构造和分析、架构决策与折中,整个评估过程强调以属性作为架构评估的核心概念
软件产品线:
概念:是指具有一组可管理的公共特性的软件密集性系统的合集,这些系统满足特定的市场需求或任务需求,并且按预定义的方式从一个公共的核心资产集开发得到
组织结构类型:
- 设立独立的核心资源小组
- 不设立独立的核心资源小组
- 动态的组织结构
成功的产品线取决于以下因素:
1.对该领域具备长期和深厚的经验
2.一个用于构建产品的好的核心资源库
3.好的产品线架构
4.好的管理支持
软件产品线建立方式:
构件与中间件:
构件:
概念:软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立的部署并由第三方任意的组装。
特性:独立部署单元、作为第三方的组装单元、没有外部可见状态
构件复用:检索与提取构件 -> 理解与评价构件 -> 修改构件 -> 组装构件
中间件:
概念:中间件是一种独立的系统软件或服务程序,可以帮助分布式应用软件在不同的技术之间共享资源
采用中间件技术的优点:
- 面向需求
- 业务的分隔和包容性
- 设计与实现隔离
- 隔离复杂的系统资源
- 符合标准的交互模型
- 软件复用
- 提供对应用构件的管理
经典应用架构:
J2EE:
分为客户机、EJB服务器、数据存储服务器
Bean分为三类:
会话Bean:描述了一个与客户端的短暂对话
实体Bean:持久化数据,ORM映射
消息驱动Bean:会话Bean加JMS,客户把消息发送给JMS的目的地,然后JMS提供者和EJB容器协作,把消息发送给消息驱动Bean。支持异步消息
核心组成:Applet、JSP、Servlet、EJB容器等
Web架构设计:
无状态:对单次请求的处理不依赖于其他请求
有状态:会在自身保存一些数据,先后的请求是有关联的
应用层负载均衡:
1.http重定向
2.反向代理服务器
传输层负载均衡:
1.DNS域名解析负载均衡
2.基于NAT的负载均衡,通过硬件实现,将一个外部IP地址映射到多个内部IP,对每次连接请求动态的转为一个内部节点的地址
数据库读写分离: 一主多从,主从复制,写主库,读从库
缓存:
Memcached: 通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频等
Redis: 提供基于内存的可持久化的日志型、Key-Value型数据存储,并提供多种语言的API
Memcached与Redis的对比:
Redis常见问题:
- 缓存雪崩:大部分缓存失效导致数据库的崩溃,解决方式:缓存高可用、缓存降级、Redis备份、提前演练
2.缓存穿透:查询数据返回空值,空值未缓存到Redis,后续大批量相同请求直接访问数据库导致数据库崩溃,解决方式:缓存空值
CDN(内容分发网络):
基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输更快、更稳定
Web应用服务器: 职能比较单一,就是把浏览器发过来的Request请求,返回Html页面
应用服务器: 进行业务逻辑的处理,如Apache服务器、tomcat服务器
REST(表述性状态传递):
是一种使用HTTP和XML进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性
5个原则:
1.网络上的所有事物都被抽象为资源
2.每个资源对应一个唯一的资源标识
3.通过通用的连接件接口对资源进行操作
4.对资源的各种操作不会改变资源标识
5.所有的操作都是无状态的
响应式Web设计:
定义:响应式Web设计是一种网络页面设计布局,其理念是:集中创建页面的图片排版大小,可以智能的根据用户行为以及使用的设备环境进行相对应的布局
方法与策略: 1.采用流式布局、弹性化设计和媒体查询等,2.响应式图片
中台:
定义:中台是结合互联网技术和行业特性,将企业核心能力以共享服务的形式进行沉淀,形成大中台、小前台的组织和业务机制,供企业快速低成本的进行业务创新的企业架构。