1、软件架构风格
1.1、概述
1、软件架构为软件系统提供了一个结构、行为和属性的高级抽象。
2、软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束。
1.2、作用
1、软件架构是项目干系人进行交流的手段。
2、软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量。
3、软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。
1.3、视角与视图
2、系统可靠性分析与设计
2.1、定义
系统在规定的时间内及规定的环境条件下,完成规定功能的能力,就是系统无故障运行的概率。
2.2、4个子特性
成熟性、容错性、易恢复性、依从性
2.3、提高系统可靠性技术
(1)冗余技术;
(2)软件容错技术;
(3)双机容错技术;
(4)集群技术。
2.4、正文概述
在架构设计期间,可靠性的要求是较为明确的,系统的核心模块运行可靠性要有保障。因此我们回顾主流的软件可靠性设计技术:
(1)容错设计技术:是应用程序所运行的软件或硬件中发生的错误并从错误中恢复所采用的设计技术,主要包括:恢复块设计、N 版本程序设计、冗余设计、卫防式程序设计等,它的设计要求,要有错误自我修复的能力;
(2) 检错技术: 是建立软件系统查错机制,对程序中模块进行监控,旦超过设定的闹值或检测到错误发出报警通知负责人处理错误,主要包括:漏洞扫描、记录日志等,它的设计要求,要有系统监控与预警错误的能力;
(3) 降低复杂度设计: 通过简化软件结构,缩短程序代码,优化软件数据流向,降低软件复杂度,从而提高软件可靠性,它的设计要求,系统的程序实现是简单的、尽量降低复杂程度。
在回顾了主流的软件可靠性设计之后,我们重点的分析了核心功能可靠性设计要求,例如:资源搜索、资源预览、资源下载、扫码支付等这些核心功能,要有错误的修复能力,因此决定采用容错设计技术实现这些功能运行可靠性。另外,要实现系统的错误预警处理,能够对系统出现的异常、错误进行收集与处理,因此决定采用检错技术实现系统监控。
参考 【系统架构师】-系统可靠性分析与设计_可靠性计算 mttf-CSDN博客
3、系统安全性与保密性设计
3.1、概述
指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。
安全性又可划分为机密性[信息不泄露给未授权的用户] 、完整性[防止信息被篡改] 、不可否认性[不可抵赖] 及可控性[对信息的传播及内容具有控制的能力] 等特性。
3.2、战术
抵抗攻击 | 通过各种技术手段和策略减少系统遭受攻击的可能性 | 使用加密技术保护数据,实施访问控制 |
检测攻击 | 识别正在进行或已经发生的攻击,以便及时采取响应措施 | 安装入侵检测系统(IDS),日志分析 |
从攻击中恢复 | 在系统遭受攻击后,恢复系统的正常运行状态 | 数据备份和恢复方案,错误隔离和修复 |
3.3、四大分类
信息安全:预警、保护、检测、响应、恢复和反击
网络安全:认证鉴别、访问控制。机密性(密钥)、完整性、抗抵赖性
数据库安全:实体、参照、自定义完整性约束
系统安全:系统架构的脆弱性
1、软件设计的瑕疵
2、软件实现中的弱点
3、软甲本身的瑕疵
4、系统和网络的错误配置
4、微服务架构
4.1、概述
微服务架构是一种新型的架构模式,将一个大型的单个应用或服务拆分成多个微服务,每个服务运行在其独立的进程内,服务之间相互协调,互相配置,为用户提供最终的价值。
4.2、优势及挑战
基于微服务的系统包含以下优势:
(1)复杂应用解耦。微服务架构将单一模块应用分解为多个微服务,同时保持总体功能不变。(2)独立。微服务在系统软件生命周期中是独立开发、测试及部署的。
(3)技术选型灵活。每个开发团队可根据自身应用的业务需求发展状况选择合适的体系架构与技术。
(4)容错。故障会被隔离在单个服务中。
(5)松耦合,易扩展。
基于微服务的系统带来的挑战:
(1)分布式特性。分布式系统的编程难度更大,因为远程调用慢,而且总存在失败的风险;
(2)最终一致性。分布式系统的强一致性很难,开发人员需要处理最终一致性的问题;
(3)运维复杂性:需要成熟的运维团队,管理很多需要重新部署的服务。
5、企业集成架构
1)数据集成:数据集成是一种白盒集成,集成点位于中间件处,需要考虑各集成子系统的数据流向,并将各个子系统有机结合起来,主要包含基于中间件技术的集成架构;
2)表现集成:是一种黑盒集成,即将各个界面子系统集成在一起,无需考虑各个子系统内部的具体数据流向
3)控制集成:也被称为应用集成,是一种黑盒集成,并且集成点位于程序代码中,用户仅需要对各子系统进行简单的API函数调用,主要包括基于API函数的集成架构。
参考 软考高级之系统架构师之企业应用集成EAI_企业应用集成 表示 控制 数据-CSDN博客
6、基于架构的软件设计ABSD、SAAM、ATAM
6.1、基于场景的评估方式分类
架构权衡分析法 ATAM(质量属性)、软件架构分析法 SAAM 、成本效益分析法 CBAM。
6.2、ATAM
基于SAAM,主要针对性能、实用性、安全性、可修改性。对这些质量属性评价和折中
过程
描述和介绍阶段:描述ATAM方法,描述业务动机,描述架构
调查和分析阶段:确定架构方法,生成质量属性效用树,分析架构方法
测试阶段:讨论场景和对场景分级,分析架构方法
最终阶段:描述评估结果
参考 【系统架构师】-软件架构评估_架构师如何评估一个系统-CSDN博客