导图社区 系统架构师
此为系统架构设计师核心知识思维导图,希望能给大家带来一些帮助,多多点赞关注哈~
编辑于2021-11-05 11:46:20系统架构设计
软件架构设计
主要关注软件构件的结构、属性和交互作用,并通过多种视图全面描述特定系统的架构
架构设计生命周期
需求分析
根据需求模型构件软件架构模型、模型转换的可追踪性
设计阶段
组成元素、体系结构描述语言ADL、4+1视图
实现阶段
项目组织结构、配置管理、中间件、程序设计语言、逐步细化
构件组装阶段
部署阶段
后开发阶段
基于架构的软件设计方法ABSD
指构成体系结构的商业、质量和功能需求的组合驱动的。采用视角和视图来描述软件架构,采用用例来描述功能需求,采用质量场景来描述质量需求
开发模型

体系结构需求
体系结构设计
体系结构文档化
主要输出结果:体系结构规则说明、测试体系结构需求的质量设计说明书
体系结构复审
目的是标识出潜在的风险,尽早发现体系结构设计中的缺陷和错误。在一个主版本的软件体系结构分析后,要安排一次由外部人员(用户代表和领域专家)参加的复审
体系结构实现
体系结构演化
三个基础
功能的分解,在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术
通过选择体系结构风格来实现质量和商业需求
软件模板的使用
软件架构风格
描述某一特定应用领域中系统组织方式的惯用模式
定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束,词汇表中包含一些构件和连接件类型;约束指出系统是如何将这些构件和连接件组合起来
体系结构风格反应了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统
典型软件架构风格
数据流风格
批处理:每一步处理都是独立的,并且每一步是顺序执行的。只有当前一步处理完,后一步处理才能开始。整体数据传送。
管道/过滤器:通常对输入流的变换、增量计算来完成,可并发
调用返回风格
主程序/子程序
面向对象
层次:每层为上一层提供服务,使用下一层的服务,只能见到与自己临接的层
独立构件风格
进程通信:进程间信息传递的方式可以是点对点、异步或同步方式、以及远程调用
事件驱动:当某个事件被触发时,系统自动调用在这个事件注册的所有过程
分析的交互:事件发出者并不会意识到事件订阅者的存在
一对多通信
基于事件的触发器
异步
虚拟机风格
解释器:JVM
基于规则的系统:人工智能
仓库(数据共享)风格
数据库系统:构件控制中央共享数据,如IDE集成开发环境
黑板,包括知识源、黑板和控制三部分
超文本系统:静态网页
闭环(过程)控制风格
C2风格
属于层次风格
二层及三层C/S架构风格
属于层次风格
新型软件架构风格
面向服务的架构SOA
关键技术:SOAP(简单对象访问协议),WSDL(Web服务描述语言),UDDI(统一描述、发现和集成)。WSDL用来描述服务,UDDI用来注册和查找服务,而SOAP作为传输层,用来在消费者和服务者之间传递消息,一个消费者可以在UDDI注册表查找服务,取得服务的WSDL描述,然后通过SOAP来调用该服务。
Web Service
企业服务总线ESB
微服务架构
将单体应用划分成一组小的服务,服务之间相互协作,实现业务功能每个服务运行在独立的进程中,服务间采用轻量级的通信机制协作
基础组件
应用网关API:提供统一入口,可以进行权限身份认证等安全管理,可以根据流量进行限流,数据缓存,性能监控等,异常重试,服务降级
服务描述:常用的服务描述方式包括RESTful API、XML配置和IDL文件三种
注册中心:服务者发布服务,消费者订阅服务
服务框架:通信协议、数据传输方式等
服务监控:指标收集、数据展示
服务追踪:追踪服务经过的链路,以便进行追踪与故障定位
服务治理:节点管理、负载均衡、制定服务路由规则、服务容错等
优点:每个服务都很小,能聚焦指定的业务功能或业务需求;能被小团队单独开发;松耦合的,有功能意思的服务;能使用不同的语言开发;去中心化,每个微服务都有自己的存储能力。
缺点:很难在不采用分布式食物的情况下跨服务实现功能;测试工作更加困难;跨服务实现功能要求团队之间的紧密协议;部署复杂。
UML4+1视图
场景视图(用例图)
从外部世界的角度描述正在建模的系统的功能
所有其他视图都依靠用例视图来指导
逻辑视图
描述系统各部分的抽象描述。用于建模系统的组成部分一级各组成部分之间的交互方式
通常包括类图、对象图、状态图和协作图
进程(过程)视图
描述系统中的进程
通常包含活动图
实现(开发)视图
描述系统的各部分被组织为模块和组件
通常包含包图和组件图
物理视图
描述如何将前三个视图中所述的系统设计实现成一组现实世界的实体。该视图中的图表展示了抽象部分如何映射到最终部署的系统中
通常包含部署图
框架模式
架构风格和架构模式的主要区别在于是否针对某个问题域和上下文(架构模式是针对某个特定上下文的某类问题的解决方案,架构风格是一个解决方案)
MVC模式
可以将业务处理与显示分离,将应用分为控制器、模型和视图,增加了应用的可扩展性、强壮性及灵活性
优点
允许多种用户界面的扩展
易于维护
功能强大的用户界面
MVP模式
优点
低耦合
可以更高效的用模型
复用性好
可测试性好
MVVM模式
由MVP进化而来,数据可以实现双向绑定,当Model变化时,ViewModel会自动更新,View也会自动变化
特定领域软件体系结构DSSA
是在一个特定应用领域中,为一组应用提供组织结构参考的标准软件体系结构
三个层次的系统模型
领域开发环境(领域架构师)
领域特定应用开发环境(应用工程师)
应用执行环境(操作员)
基本活动
领域分析
获得领域模型,描述领域中系统之间共同的需求
领域设计
获得特定领域软件架构
领域实现
依据领域模型和DSSA开发和组织可重用信息,并对基础软件架构进行实现
参与角色:领域专家、领域分析人员、领域设计人员、领域实现人员
层次式架构
表现层
使用MVC模式设计表现层
表现层动态生成设计思想
中间层
业务逻辑层框架
Domain Model是领域层业务对象
Service是业务过程实现的组成部分
Control是服务控制器
数据访问层
5中数据访问模式
在线访问
Data Access Object
Data Transfer Object
离线数据模式
对象/关系映射(O/R Mapping)
Hibernate设计思想
持久层
质量属性
非功能性需求,并不被功能所决定;不同的软件项目,关注不同的质量属性;质量属性之间可能相互抑制。
性能:处理任务所需要的时间或单位时间内的处理量
提升策略:资源的需求(减少处理事件时对资源的占用、减少处理事件的数量、控制资源的使用);资源管理(并发管理、增加资源);资源仲裁(先来先服务、固定优先级、动态优先级、静态调度)
可靠性
容错:出现错误时仍能保证系统正确运行,且自行修正错误
健壮性:错误不对系统产生影响,按既定程序忽略错误
可靠性分析与设计
可靠性指标
平均无故障时间(MTBF)
平均故障修复时间(MTTR)
假设修复率(常数),修复率是指单位时间内可修复系统的平均次数,则平均故障修复时间MTTR=1/修复率
平均故障间隔时间(MTTF)
MTBF=MTTR+MTTF(两次故障之间必然有修复行为,因此平均故障间隔包含MTTR)
可用性=MTTF/(MTTR+MTTF)=MTTF/MTBF
串并联系统可靠性
串联系统
一个系统由n个系统组成,当且仅当所有的子系统都能正常工作时,系统才能正常工作
并联系统
当所有系统都失效时,系统才失效
提升可靠性的技术
冗余
结构冗余
静态冗余
动态冗余
混合冗余
信息冗余
时间冗余
冗余附加
软件容错技术
N版本程序设计
静态的故障屏蔽技术,前向恢复策略
恢复块方法
动态的故障屏蔽技术,后向恢复策略
防卫式程序设计
双机容错技术
双机热备模式
一台服务器处于工作状态,另一台服务器处理监控准备状态
双机互备模式
两台服务器均处于工作状态。当一台服务器出现故障时,另一台服务器可以在短时间内将故障服务器的应用接管过来
双机双工模式
集群技术的一种形式,两台服务器提供相同的应用服务
集群技术
组成部分
服务器组
对外提供服务的网络
心跳信号通路
数据共享磁盘阵列
分类
高性能计算集群系统
利用高速互联网络将一组PC机连接起来,在并行程序设计和集成开发环境支持下,统一调度和协调处理,实现高效并行处理的系统
负载均衡集群
定义:动态均衡,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理分配出去
客户端负载均衡
服务器端负载均衡
集中式负载均衡
均衡器位于集群中一台计算机上
分布式负载均衡
有多个均衡器位于集群中不同的计算机上,有这些均衡器根据其均衡策略和集群中各计算机的当前负载状态,以分布式协商的机制分配负载
高可用性集群
高并发下的高可用性技术
CDN
能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点
负载均衡
分类
基于http的负载均衡
定义:根据用户的http请求计算出一个真实的web服务器地址,并将web服务器地址写入重定向
缺点:需要两次请求服务器,性能较差
基于DNS的负载均衡
优点:将负载均衡的工作交给了DNS
缺点:DNS是多级解析,每一级都可能存在缓存
基于NAT的负载均衡
定义:将一个外部IP地址映射为多个内部IP地址,对每次连接请求动态地址换为一个内部节点的地址,将外部连接请求引到转换得到地址的那个节点上
优点:在响应请求时速度较反向服务器负载均衡要快
缺点:当请求数据较大(大型视频或文件)时,速度较慢
反向代理负载均衡
作用在服务器端,是一个虚拟的IP。对于用户的一个请求,会转发到多个后端处理中的一台来处理该具体请求
优点:部署简单,处理http协议层面
缺点:反向服务器作为沟通桥梁,需要配置双网卡、外部内部两套IP地址
算法
静态均衡算法
轮询法
定义:将请求按顺序轮流地分配到每个节点上,不关心每个节点实际的连接数和当前的系统负载
优点:简单高效,易于水平扩展,每个节点满足字面意义上的均衡
缺点:没有考虑机器的性能问题,根据最短木板理论,集群性能瓶颈更多的会受性能差的服务器影响
随机法
源地址哈希法
思想:根据客户端的IP地址,通过哈希函数计算得到一个值,用该值对服务器节点数进行取模,得到的结果便是要访问节点序号
优点:相同的IP每次落在同一节点,可以人为干预客户端请求方向,例如灰度发布
缺点:如果某个节点出现故障,会导致这个节点上的客户端无法使用
加权轮询法
加权随机法
键值范围法
优点:
缺点:容易负载不均衡
动态负载均衡法
最小连接数法
优点:动态,根据节点状况实时变化
缺点:提高了复杂度,每次连接都需要计数
最快响应速度法
缺点:复杂度更高,每次需要计算请求的响应速度
观察模式法
综合最小连接数和最快响应速度,同时考量这两个指标数
性能评价指标
软、硬件的性能指标的集成,包括计算机、路由器、交换机、网络、操作系统、数据库、WEB服务器
计算机
主频:又称时钟频率,很大程度上决定了计算机的运算速度。主频=外频X倍频
CPU时钟周期:一个时钟脉冲所需要的的时间
机器周期:取指令、存储器读、存储器写等,这每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。一个机器周期由若干个时钟周期组成
CPI:每条指令执行所需要的时钟周期,是一个平均数
MIPS:每秒百万条指令平均执行速度。MIPS=指令条数/(执行时间*10的6次方)=主频/CPI
系统性能经典评估方法
时钟频率法
指令执行速度法
等效指令速度法
数据处理速率法(PDR)
综合理论性能法
基准程序法
定义:把应用程序中用的最多、最频繁的那部分核心程序作为评估计算机系统性能的标准程序
基准程序法是目前一致承认的测试系统性能的较好方法
阿姆达尔解决方案
量化定义了通过改进系统中每个组件的性能,使系统整体性能提高的程度
可用性:正常运行的时间比例
提升策略:错误检测(心跳、Ping/Echo、异常)、错误恢复(表决、主动冗余、被动冗余、重新同步、内侧、检查点/回滚)、错误避免(服务下线、事务、进程监控器)
安全性
定义:系统像合法用户提供服务并阻止非法用户的能力
提升策略:抵抗攻击(用户身份验证、用户授权、维护数据机密性与完整性、限制暴露、限制访问);检测攻击(入侵检测系统);从攻击中恢复(恢复状态、识别攻击者)
安全分析与设计
安全防范体系的层次
物理环境安全
操作系统安全
网络安全
应用安全
管理安全
数据加密技术
对称加密算法
瑞士的国际数据加密算法(IDEA)
在DES的基础上发展起来的,类似于3DES。明文和密文都是64位,密钥长度是128位
美国的数据加密标准(DES)
56位密钥+8位奇偶校验位
为了提高安全性,出现了3DES算法,三次加密、密钥长度126位
攻击DES的主要技术是穷举法
非对称加密算法
RSA
密钥长度512位
认证技术
又称鉴别和确认,它是证实某事物是否名副其实或者有效地一个过程。
加密用于确认数据的保密性,阻止对手的被动攻击;认证用于确保数据发送者和接受者的真实性和报文的完整性,阻止对手的主动攻击。
数字签名
主要使用非对称加密算法
可保证:接收者能够核实发送者对数据的签名;发送者时候不能抵赖对数据的签名;接收者不能伪造对数据的签名。
杂凑算法
利用哈希函数(哈希函数、杂凑算法)进行数据的加密
消息摘要算法(MD5)
输入以512位为分组进行处理,产生一个128位的输出
安全散列算法(SHA)
产生一个160位的消息摘要
数据证书
又称为数字标识,是由认证中心(CA)签发的对用户的公钥的认证
身份认证
口令认证
动态口令认证
生物特征识别
密钥管理机制
通信与网络安全技术
防火墙
功能
访问控制功能
全面的日志功能
内容控制功能
集中管理功能
自身的安全和可用性
附加功能
流量控制
网络地址转换(NAT)
VPN
分类
过滤性防火墙
电路级网关型防火墙
应用网关型防火墙
代理服务型防火墙
状态检测型防火墙
自适应代理型防火墙
实现模式
双宿/多宿主机模式
屏蔽主机模式
包括过滤路由器和堡垒主机
屏蔽子网模式
两个包过滤器和一个堡垒主机
安全协议
SSL
HTTPS
PGP
基于RSA的邮件加密软件
IPSec
工业标准网络完全协议。两个基本目标:保护IP数据包、为抵御网络攻击提供防护措施。
可以显著减少或防范以下网络攻击
Sniffer
数据篡改:用密钥为每个IP包生成一个数字检查和
身份欺骗,盗用口令,应用层攻击
中间人攻击
拒绝服务攻击
入侵检测系统(IDS)
基于数据源的分类
基于主机的IDS
基于网络的IDS
基于检测方法的分类
异常检测
无用检测
入侵防护系统(IPS)
是一种主动的、积极的入侵防范和组织系统,它部署在网络的进出口出,当检测到攻击企图后,它会自动地将攻击包丢掉或采取措施将攻击源阻断
访问控制
自主访问控制(DAC)
强制访问控制(MAC)
基于角色的访问控制(RBAC)
基于任务的访问控制(TBAC)
基于对象的访问控制(OBAC)
可修改性
可维护性:错误发生后进行局部性修改,对其他构件负面影响最小
可扩展性:使用新构建、改进或删除原有构件或特性
结构重组:重新组织构件及构件关系、灵活配置构件
可移植性
提升策略:局部化修改(高内聚低耦合、预测变更、使模块通用);防止连锁反应(信息隐藏、维持现有接口、限制通信路径、使用中介);推迟绑定时间(运行时注册、多台、配置文件)
架构评估方法
基于调查问卷或检查表的方式
基于场景的方式
架构权衡分析方法(ATAM)
主要在开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。分为4个主要的活动阶段,包括需求收集、架构视图描述、属性模型构造和分析、架构决策与折中,整个评估过程强调以属性作为架构评估的核心概念。
软件架构分析方法(SAAM):非功能质量属性的架构分析方法。主要输入是问题描述、需求说明和架构描述,其分析过程主要包括场景开发、架构描述、单个场景评估、场景交互和总体评估
成本收益分析方法(CBAM)
用来对架构设计决策的成本和收益进行建模, 它的基本思想是架构策略影响系统的质量属性, 反过来这些质量属性又会为系统的项目干系人带来一些收益(称为“效用” ) , CBAM协助项目干系人根据其投资收益率选择架构策略
基于度量的方式
中间件
基本功能
负责客户机与服务器之间的连接和通信,以及客户机与应用层之间的高效率通信机制
提供应用层不同服务之间的互操作机制,以及应用层与数据库之间的连接和控制机制
提供一个多层架构的应用开发和运行的平台,以及一个应用开发框架,支持模块化的应用开发
屏蔽硬件、操作系统、网络和数据库的差异
提供应用的负载均衡和高可用性、安全机制与管理功能,以及交易管理机制,保证交易的一致性
提供一组通用的服务去执行不同的功能,避免重复的工作和使应用之间可以协作
按照承担的职责不同进行分类
通信处理(消息)中间件
主要产品:BEA的eLink,IBM的MQSeries
事务处理(交易)中间件
数据存取管理中间件
Web服务器中间件
安全中间件
跨平台和架构的中间件
JavaBeans
专用平台中间件
网络中间件
应用服务器
J2EE
针对WebService、业务对象、数据访问和消息报传送的一组规范
关注两件事:一是建立标准;二是是服务器能控制构件的生命周期和其他资源,以便能够处理扩展、并发、事务处理管理和安全性问题
核心组成
容器:Web Container
组件:Applet、JSP/Servlet、EJB
服务:JDBC、JMS、JNI、JAXP、JAAS、JSF
采用多层分布式应用模型
表示层
业务逻辑层(中间层)
数据访问层
多层架构的优点
开发人员可以只关注整个结构中的某一层
可以很容易的用新的实现来替换原有层次的实现
可以降低层与层之间的依赖
有利于标准化
利于各种逻辑的复用
扩展性强,不同层负责不同的层面
安全性高
项目结构更清楚,分工更明确,有利于后期的维护和升级
EJB
用于封装业务逻辑,使开发人员无须再担心数据访问、事务处理支持、安全性、高速缓存和迸发等琐碎任务的编程
三种类型
实体Bean
表示数据中的数据及作用于数据的方法
会话Bean
有状态会话Bean:保存客户端的状态
无状态会话Bean
消息驱动Bean
.NET
通用语言运行时
基础类库
ADO.NET
引入了DataSet的概念,这是一个贮存于内存的数据缓冲区
ASP.NET
企业应用集成EAI
功能
中间件产品对各种硬件平台、操作系统、网络数据库产品及客户端实现了兼容和开放
中间件保持了硬件的透明性,是可爱发者不必考虑操作系统的问题
中间件实现了对交易的一致性和完整性的保护,提高了系统的可靠性
中间件产品可以缩短开发周期,从而大大的降低了开发承办,提高了开发效率
按照集成的深度进行分类
应用集成
业务过程集成
数据集成
Java企业应用架构
MVC
分离模型、视图与控制器,使得三部分功能相对独立,一方面可以让系统的设计开发工作分工明确,方便开发人员的相互合作;另一方面,按照MVC模式划分的系统的各部分功能保持独立,有利于组件复用
Struts框架
Spring框架
核心是控制反转(IoC)和面向切面(AOP)
优点
方便解耦,简化开发(高内聚低耦合)
AOP编程的支持
声明式事务的支持
方便程序的测试
方便集成各种优秀框架
降低JavaEE API的使用难度
ORM
优点:降低学习和开发成本;不用再写SQL进行数据库操作;减少程序代码量;降低由于SQL代码质量差带来的影响
缺点:性能比直接用SQL差;处理复杂查询比较困难
Hibernate
定义:开源的对象关系映射框架
特点
通过修改一个“持久化”对象的属性,从而修改数据库表中对应的记录数据
提供线程和进程两个级别的缓存提升应用程序性能
有丰富的映射方式将Java对象之间的关系转换为数据库表之间的关系
屏蔽不同数据库实现之间的差异
非侵入式
MyBatis
特点
简单易学
灵活
解除sql与程序代码的耦合
提供映射标签
提供对象关系映射标签,支持对象关系组建维护
提供xml标签,支持编写动态sql
与Hibernate的区别
开发方面
sql优化方面
对象管理
缓存方面
Hibernate与MyBatis区别
开发方面:hibernate中sql语句已经被封装,直接使用,mybatis属于半自动化
sql优化方面:hibernate自动生成sql,会多消耗一些性能
对象管理方面:hibernate是完整的对象-关系映射的框架,开发中无需过多关注底层实现,只要去管理对象即可;mybatis需要自行管理映射关系
缓存方面:hibernate在使用二级缓存时如果出现脏数据会报错,mybatis脏读不报错
耦合
耦合类型
架构师实践
管理实践
软件架构的主要障碍往往在于组织方面而不是技术
VRAPS组织管理原则
V构想原则(Vision):向受益人描述未来愿景
R节奏原则(Rhythm):定期根据可预测的进度、内容和质量进行检查和规划
A预见原则(Anticipation):预测未来与现状之间做出平衡
P协作原则(Partnering):如何识别并确保合作伙伴的有效支持
S简化原则(Simplification):了解架构最小的基本特征并最小化架构
RM-ODP实践
系统构想
系统开发人员与用户之间的共同协议
构想阶段, 架构师及早介入的好处: (1)、 有利架构师对系统的认识更全面、 准确; (2)、 有利统一开发人员的思想和看法; (3)、 有利正确确定需求的先后顺序; (4)、 最大程度提高与客户的沟通、 客户对设计的参与
架构设计
企业业务架构、 逻辑信息架构、 计算接口、 分布工程和技术的选择
管理科学
最小生成树
最大流量
决策论
乐观主义准则
悲观主义准则
后悔值准则
灵敏度分析
线性规划
动态规划
标准化与知识产权
知识产权
著作权
计算机保护条例
专利权法
商标法