arch8. 论文写作
- 将专业知识和工程实践相结合
- 考查考生在系统架构设计方面的经验和综合能力,以及表达能力
- 要有经验,才能认证 -> 论文中体现参与设计架构的经验
- 考察独立工作能力 分析问题解决问题
- 文档表达能力,多读范文
- 准备好万能模板
1. 基于构件的软件开发
过程:
- 系统需求概览;
- 识别候选构件
- 根据发现构件修改需求
- 体系架构设计
- 构件定制与适配
- 构件组装、创建系统
构件组装方法:1. 顺序组装;2. 层次组装;3. 叠加组装;
2. 基于架构的软件开发(ABSD)
三个基础:1. 功能分解,使用已有的基于模块的内聚和耦合技术;2. 选择体系结构风格来实现质量和业务需求;3. 软件模板使用。
过程:
- 架构需求;
获取用户需求,标识系统中要用到的构件。 - 架构设计
选择合适的架构风格,提出架构模型,把已标识构件映射到架构上,分析构件相互作用、产生架构和评审 - 架构文档化
对架构设计分析与整理,产生架构规格说明书和架构质量设计说明书 - 架构复审
评价架构能否满足需求与实现质量属性、层次构件划分是否合理,标识潜在的风险,及早发现设计中的缺陷错误; - 架构实现
对架构进行实现,包括架构分析与设计、构件实现、组装和系统测试; - 架构演化
主要解决开发中用户需求变更问题,包括制定架构演化计划、更新、修改构件和构件的相互作用,构件组装测试,技术评审;
3. 架构评估
架构评估方法
-
基于场景的架构评估方法 SAAM(Scenarios-based Architecture Analysis Method)
特点:把任何形式的质量属性都具体化为场景。重点在于详细分析每个质量属性场景,确保全面评估架构。
SAAM分析评估架构的过程包括5个步骤,即场景开发、架构描述、单个场景评估、场景交互和总体评估。 -
架构权衡分析方法 ATAM(Architecture Tradeoff Analysis Method,ATAM)
特点:- ATAM 方法采用效用树 (Utility tree) 这一工具来对质量属性进行分类和优先级排序。效用树的结构包括:树根—质量属性—属性分类—质量属性场景(叶子节点)。
- ATAM主要关注4类质量属性:性能、可用性、可修改性、安全性,这是因为这4个质量属性是利益相关者最为关心的。重点在于评估架构决策的权衡,通过互动和讨论,快速识别潜在的风险和问题。
-
成本效益分析方法 CBAM(the Cost Benefit Analysis Method, CBAM)
特点:在ATAM上构建,用来对架构设计决策的成本和收益进行建模,协助项目干系人根据其投资回报选择架构策略。CBAM在 ATAM 结束时开始,它实际上使用了ATAM评估的结果。
架构权衡分析方法(ATAM)
架构权衡分析方法(ATAM)评估架构决策对系统质量属性(如性能、可维护性、安全性等)的影响 通过一系列的研讨会和评估活动,帮助团队理解架构决策的权衡,并做出更明智的决策。
- 准备阶段
确定参与者 架构师 开发人员 项目经理 安全专家 测试工程师
收集背景信息
构建一个高性能、可维护安全的在线购物系统
需求:支持高并发,响应时间少于2s,数据安全
定义质量属性 性能、可修改性、安全性 - 启动会议
介绍项目
ATAM方法介绍
确定质量属性 - 架构描述
系统采用微服务架构,主要模块包括用户服务、订单服务、支付服务等 - 质量属性场景
定义质量属性场景
评估每个场景对质量属性影响
识别潜在风险 - 架构决策评估
评估架构决策对质量属性影响
不同决策权衡
微服务架构:优点是模块化、可扩展性强,缺点是复杂性高、部署和维护成本高。 - 报告总结 编写报告 反馈改进
将评估结果反馈给项目团队
制定改进措施
4. 软件可靠性和架构演化
软件可靠性设计技术主要有融错技术、检错技术、降低复杂度设计等
融错技术
- 恢复块设计 选择一组操作做为融错设计单元,把普通程序块更改为恢复块。一个恢复块包含若干功能相同、设计差异的程序块,每一个时刻一个程序块处于运行状态,一旦该程序块故障,用备用块替代
- N版本程序设计 设计多个版本程序,对相同初始条件和输入数据的操作结果,实行多数表决,防止其中一个版本程序提供错误服务
- 冗余设计 在一套完整的软件系统之外,设计一种不同路径、不同算法和不同实现方法的系统做为备份
检错技术
软件出现故障后,能及时发现并报警
降低复杂度设计
降低复杂度设计的思想就是在保证实现软件功能的基础上,简化软件结构,缩短程序代码长度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。
系统配置技术
- 双机热备份技术 两台服务器安装相同程序,一台出现故障,备机主动替代主机工作,采用心跳方法联系,主从之间按照一定频率发送通信信号,表面各自状态
- 服务器集群技术
软件架构演化
- 需求变更归类;2. 明确体系结构演化计划;3. 修改、增加删除构件;4. 构件之间的连接件适配;5. 构件组装和测试;6. 技术评审。
5. 大数据架构和安全架构
lambda架构
旨在处理大规模数据,同时支持实时和批处理,主要由三部分构成:
- 批处理层,负责处理历史数据
- 数据存储 使用hadoop HDFS 存储大规模历史数据
- 数据处理 使用 hadoop MapReduce 进行批处理,分析历史数据,生成统计报告和趋势分析
- 速度层 负责处理实时数据流
- 使用kafka做为消息队列,收集实时数据流
- 使用spark进行实时数据流处理
- 服务层 提高统一查询接口
优缺点:
- 灵活性:支持实时和批处理,能够灵活应对不同需求;
- 迁移成本高
kappa架构
是lambda架构的简化版,主要关注实时数据流处理
- 流处理层
- 存储层
6. 面向服务的架构设计
从应用角度,将应用划分为单独的业务功能和流程,即所谓的服务;SOA使得用户可以构建、部署和整合这些服务,且无需依赖应用程序及其运行平台,从而提高业务流程的灵活性。从原理角度,认为SOA是一个组件模型,将应用程序的不同功能单元(成为服务)通过接口连接起来,接口采用中立方式定义,和硬件平台、操作系统、编程语言无关。
包含6类服务:
- 业务逻辑服务 用于实现和执行业务逻辑,包括业务应用服务、业务伙伴服务、应用和信息资产;
- 控制服务 实现人、流程和信息的集成以及执行集成逻辑;
- 连接服务 通过企业服务总线,实现在各服务间的连接件;
- 业务创新和优化服务 用于监控业务系统运行时的业务性能,并采取措施适应变化的市场;
- 开发服务 贯彻整个软件开发生命周期的开发平台,提供全面的工具支持;
- IT服务管理 支持业务系统运行的各种基础设施管理能力或服务,如安全服务、目录服务、系统管理和资源虚拟化。
补充
1. Nginx 负载均衡
可以作为负载均衡器(反向代理服务器),有效地分发请求到多个后端服务器,提高系统的可用性和性能
负载均衡方法
- 轮询,Nginx会依次将请求分发到每个后端服务器
- 最少连接,将请求分发到当前连接数最少的服务器
- IP哈希,根据请求的IP地址进行哈希运算,确保来自同一客户端的请求总是被分发到同一台后端服务器