arch8. 论文写作

  • 将专业知识和工程实践相结合
  • 考查考生在系统架构设计方面的经验和综合能力,以及表达能力
    • 要有经验,才能认证 -> 论文中体现参与设计架构的经验
    • 考察独立工作能力 分析问题解决问题
    • 文档表达能力,多读范文
    • 准备好万能模板

1. 基于构件的软件开发

过程:

  1. 系统需求概览;
  2. 识别候选构件
  3. 根据发现构件修改需求
  4. 体系架构设计
  5. 构件定制与适配
  6. 构件组装、创建系统

构件组装方法:1. 顺序组装;2. 层次组装;3. 叠加组装;

2. 基于架构的软件开发(ABSD)

三个基础:1. 功能分解,使用已有的基于模块的内聚和耦合技术;2. 选择体系结构风格来实现质量和业务需求;3. 软件模板使用。
过程:

  1. 架构需求;
    获取用户需求,标识系统中要用到的构件。
  2. 架构设计
    选择合适的架构风格,提出架构模型,把已标识构件映射到架构上,分析构件相互作用、产生架构和评审
  3. 架构文档化
    对架构设计分析与整理,产生架构规格说明书和架构质量设计说明书
  4. 架构复审
    评价架构能否满足需求与实现质量属性、层次构件划分是否合理,标识潜在的风险,及早发现设计中的缺陷错误;
  5. 架构实现
    对架构进行实现,包括架构分析与设计、构件实现、组装和系统测试;
  6. 架构演化
    主要解决开发中用户需求变更问题,包括制定架构演化计划、更新、修改构件和构件的相互作用,构件组装测试,技术评审;

3. 架构评估

架构评估方法

  1. 基于场景的架构评估方法 SAAM(Scenarios-based Architecture Analysis Method)
    特点:把任何形式的质量属性都具体化为场景。重点在于详细分析每个质量属性场景,确保全面评估架构。
    SAAM分析评估架构的过程包括5个步骤,即场景开发、架构描述、单个场景评估、场景交互和总体评估。

  2. 架构权衡分析方法 ATAM(Architecture Tradeoff Analysis Method,ATAM)
    特点:

    • ATAM 方法采用效用树 (Utility tree) 这一工具来对质量属性进行分类和优先级排序。效用树的结构包括:树根—质量属性—属性分类—质量属性场景(叶子节点)。
    • ATAM主要关注4类质量属性:性能、可用性、可修改性、安全性,这是因为这4个质量属性是利益相关者最为关心的。重点在于评估架构决策的权衡,通过互动和讨论,快速识别潜在的风险和问题。
  3. 成本效益分析方法 CBAM(the Cost Benefit Analysis Method, CBAM)
    特点:在ATAM上构建,用来对架构设计决策的成本和收益进行建模,协助项目干系人根据其投资回报选择架构策略。CBAM在 ATAM 结束时开始,它实际上使用了ATAM评估的结果。

架构权衡分析方法(ATAM)

架构权衡分析方法(ATAM)评估架构决策对系统质量属性(如性能、可维护性、安全性等)的影响 通过一系列的研讨会和评估活动,帮助团队理解架构决策的权衡,并做出更明智的决策。

  1. 准备阶段
    确定参与者 架构师 开发人员 项目经理 安全专家 测试工程师
    收集背景信息
    构建一个高性能、可维护安全的在线购物系统
    需求:支持高并发,响应时间少于2s,数据安全
    定义质量属性 性能、可修改性、安全性
  2. 启动会议
    介绍项目
    ATAM方法介绍
    确定质量属性
  3. 架构描述
    系统采用微服务架构,主要模块包括用户服务、订单服务、支付服务等
  4. 质量属性场景
    定义质量属性场景
    评估每个场景对质量属性影响
    识别潜在风险
  5. 架构决策评估
    评估架构决策对质量属性影响
    不同决策权衡
    微服务架构:优点是模块化、可扩展性强,缺点是复杂性高、部署和维护成本高。
  6. 报告总结 编写报告 反馈改进
    将评估结果反馈给项目团队
    制定改进措施

4. 软件可靠性和架构演化

软件可靠性设计技术主要有融错技术、检错技术、降低复杂度设计等
融错技术

  1. 恢复块设计 选择一组操作做为融错设计单元,把普通程序块更改为恢复块。一个恢复块包含若干功能相同、设计差异的程序块,每一个时刻一个程序块处于运行状态,一旦该程序块故障,用备用块替代
  2. N版本程序设计 设计多个版本程序,对相同初始条件和输入数据的操作结果,实行多数表决,防止其中一个版本程序提供错误服务
  3. 冗余设计 在一套完整的软件系统之外,设计一种不同路径、不同算法和不同实现方法的系统做为备份

检错技术
软件出现故障后,能及时发现并报警

降低复杂度设计
降低复杂度设计的思想就是在保证实现软件功能的基础上,简化软件结构,缩短程序代码长度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。

系统配置技术

  1. 双机热备份技术 两台服务器安装相同程序,一台出现故障,备机主动替代主机工作,采用心跳方法联系,主从之间按照一定频率发送通信信号,表面各自状态
  2. 服务器集群技术

软件架构演化

  1. 需求变更归类;2. 明确体系结构演化计划;3. 修改、增加删除构件;4. 构件之间的连接件适配;5. 构件组装和测试;6. 技术评审。

5. 大数据架构和安全架构

lambda架构

旨在处理大规模数据,同时支持实时和批处理,主要由三部分构成:

  1. 批处理层,负责处理历史数据
    • 数据存储 使用hadoop HDFS 存储大规模历史数据
    • 数据处理 使用 hadoop MapReduce 进行批处理,分析历史数据,生成统计报告和趋势分析
  2. 速度层 负责处理实时数据流
    • 使用kafka做为消息队列,收集实时数据流
    • 使用spark进行实时数据流处理
  3. 服务层 提高统一查询接口

优缺点:

  1. 灵活性:支持实时和批处理,能够灵活应对不同需求;
  2. 迁移成本高

kappa架构

是lambda架构的简化版,主要关注实时数据流处理

  1. 流处理层
  2. 存储层

6. 面向服务的架构设计

从应用角度,将应用划分为单独的业务功能和流程,即所谓的服务;SOA使得用户可以构建、部署和整合这些服务,且无需依赖应用程序及其运行平台,从而提高业务流程的灵活性。从原理角度,认为SOA是一个组件模型,将应用程序的不同功能单元(成为服务)通过接口连接起来,接口采用中立方式定义,和硬件平台、操作系统、编程语言无关。

包含6类服务:

  1. 业务逻辑服务 用于实现和执行业务逻辑,包括业务应用服务、业务伙伴服务、应用和信息资产;
  2. 控制服务 实现人、流程和信息的集成以及执行集成逻辑;
  3. 连接服务 通过企业服务总线,实现在各服务间的连接件;
  4. 业务创新和优化服务 用于监控业务系统运行时的业务性能,并采取措施适应变化的市场;
  5. 开发服务 贯彻整个软件开发生命周期的开发平台,提供全面的工具支持;
  6. IT服务管理 支持业务系统运行的各种基础设施管理能力或服务,如安全服务、目录服务、系统管理和资源虚拟化。

补充

1. Nginx 负载均衡

可以作为负载均衡器(反向代理服务器),有效地分发请求到多个后端服务器,提高系统的可用性和性能
负载均衡方法

  1. 轮询,Nginx会依次将请求分发到每个后端服务器
  2. 最少连接,将请求分发到当前连接数最少的服务器
  3. IP哈希,根据请求的IP地址进行哈希运算,确保来自同一客户端的请求总是被分发到同一台后端服务器
posted @ 2024-10-19 17:07  ldfm  阅读(9)  评论(0编辑  收藏  举报