X / Github

系统架构师知识点

第一章 计算机组成

a. 波特率:受硬件时钟频率控制

b. 按位传输,正确性依赖于校验码纠正

  1. 并行总线:适合 近距离高速 传输

第二章 系统性能评价

基准程序:用的最多,最频繁的 核心 程序

第三章 操作系统

a. P 操作:申请资源,资源数 -1

b. V 操作:释放资源,资源数 +1

  1. 死锁

a. 死锁资源计算:

b. 死锁产生的条件:

c. 死锁避免:银行家算法

  1. 线程:

a. 共享进程的资源:公共数据、全局变量、代码、文件

b. 不共享:线程的栈指针、一组寄存器、程序计数器

  1. 内存

a. 分区

b. 分页:根据物理空间划分

c. 分段:根据逻辑空间划分

  1. 存储

a. DAS(直接附加存储):存储设备是通过电缆(通常是SCSI接口电缆)直接连接服务器,不能提供跨平台文件共享功能

b. NAS(网络附加存储):存储设备通过网络连接到服务器,提供跨平台文件共享功能,直接通过网络接口与网络直接相连;NAS设备有自己的OS

c. SAN(存储区域网络):通过专用高速网将一个或多个网络存储设备和服务器连接起来,使用以太网(IP SAN)和光纤通道(FC SAN)

  1. I/O

a. 由设备、控制器、通道、总线和 I/O 软件组成

  1. 多级地址索引索引数量:索引块大小 / 地址项大小

a. 例如:索引块大小 4KB,地址项大小 4B,索引数量就是 4KB / 4B = 1024

  1. 实时操作系统的外部事件必须在被控对象允许的时间内处理

  2. 前趋图中如果有的关系可以通过其他依赖关系隐含表示,那么可以省略

第四章 数据库

a. 确定局部视图范围

b. 确定实体、联系

c. 分配实体及联系的属性

  1. 椭圆:属性

  2. 长方形:实体

  3. 菱形:联系,两段要写联系类型:1:1、1:N(一对多)、N:M(多对多)

a. M:N 关系:需要引入中间表

  1. 冲突

a. 属性冲突:同一个实体或关系中,属性的类型、值域或取值范围定义不一致

b. 结构冲突:一个概念可能被表示成不同的实体、关系或属性

c. 命名冲突:在不同ER图中,同一实体或属性使用了不同的名字,或者不同的实体或属性使用了相同的名字

d. 实体冲突:在不同ER图中,对于同一个概念建模的实体,其结构或定义范围存在冲突

  1. 候选码:入度为 0 的唯一性属性

a. π1,4(σ3=6(R×S))

  1. 自然连接:特殊的等值连接,即R关系中的属性与S关系中属性进行等值连接,然后去掉重复属性列

a. 部分函数依赖:A 可以确定 C,A,B 也可以确定 C,由于 A,B 中的一部分就可以确定C,所以称为部分函数依赖

b. 传递函数依赖:A 可以确定 B,B 可以确定 C,那么 A 也可以确定 C,所以称为传递函数依赖

  1. Armstrong 公理系统

a. 反身性:如果 X 是 Y 的子集,那么 Y 是 X 的超集

b. 增广率(增强性):如果 X -> Y,那么 XZ -> YZ

c. 传递性:如果 X -> Y,Y -> Z,那么 X -> Z

d. 分解性:如果 X -> W,Z 属于 W,那么 X -> Z

e. 合成性:如果 X -> Y,X -> Z,那么 X -> YZ

  1. 范式

第一范式:每个属性都是不可分割的原子值

第二范式:满足第一范式,且不存在部分函数依赖(消除非主属性对候选键的部分依赖)

第三范式:满足第二范式,且不存在传递函数依赖(消除非主属性对候选键的传递依赖)

BCNF:满足第三范式,且消除主属性对候选键的传递依赖

a. 原子性:全做或全不做

b. 一致性:事务执行前后,数据是一致的

c. 隔离性:事务的更新对其他事务不可见

d. 持久性:事务提交后,数据是持久的

  1. 事务存在的3个问题

a. 丢失更新:两个事务同时更新同一数据,最后一个事务的更新覆盖了第一个事务的更新

b. 脏读:一个事务读取了另一个事务未提交的数据

c. 不可重复读:一个事务读取了另一个事务提交的数据

  1. 事务的封锁协议

a. X 锁:排他锁,读写锁,只允许一个事物读取和修改

b. S 锁:共享锁,读锁,允许多个事物读取,但是不能修改

c. 一级封锁协议:修改数据前,先加上 X 锁,可以解决丢失更新问题

d. 二级封锁协议:在一级封锁协议的基础上,读取数据前,先加上 S 锁,读完立即释放,可以解决脏读

e. 三级封锁协议:在二级封锁协议的基础上,读取数据前,先加上 S 锁,事务结束后释放,可以解决不可重复读

a. 优点:容错性好、查询灵活度高、易伸缩、易扩展。支持离线和实时数据。

b. 缺点:编码开销、成本、收益

  1. Hadoop 框架:主要在离线批处理模式下

第五章 计算机网络

CAT3:3类,10Mbps

CAT4:4类,无应用

CAT5:5类,100Mbps、快速以太网

CAT5e:增强型5类、超五类,1000Mbps

CAT6:6类,1000Mbps

2。 光纤

单模光纤适合:长距离传输,带宽高

多模光纤适合:短距离传输,带宽低

a. IEEE 802.3

  1. 网络层:网络逻辑地址寻址,还实现了拥塞控制等,该层的协议产生【分组】,以便发送和接收数据分组;IP、ICMP、ARP、RARP、IGMP

a. PTR 记录:反向解析记录,可以把 IP 地址转换成域名

  1. 传输层:确保数据可靠、顺序、无错的从 A 传输到 B,提供错误恢复和流量控制;TCP、UDP

a. TCP 的端口号用于对应用层进程进行寻址

b. TCP 和 UDP 都是全双工的

c. TCP 是面向连接的,UDP 是无连接的

d. TCP 是面向字节流的,UDP 是面向报文的

  1. 会话层:建立、管理和终止会话连接;RPC、SQL

  2. 表示层:数据格式转换、加密和解密;JPEG、MPEG、ASCII

  3. 应用层:用户直接使用的协议;HTTP、FTP、SMTP、DNS、DHCP

a. DHCP:动态主机配置协议,自动分配 IP 地址,在一个局域网中可以存在多个 DHCP 服务器,客户的申请每台服务器都会响应,客户根据最先到达的报文来选择 ip 地址,对于客户端来说不知道 DHCP 服务器地址,也无法指定

作用:根据 MAC 地址转发数据帧

  1. 路由器:运行在网络层,负责不同网络之间的通信

作用:根据 IP 地址转发数据包

  1. 网桥:工作在数据链路层,连接两个局域网

a. 核心层:在逻辑上只有一个,连接多个分布层交换机,通常是一个园区中连接多个建筑物的总交换机的核心网络设备

b. 汇聚层:汇聚层定义网络的访问策略

c. 接入层:接入层提供局域网络接入功能。,可以使用集线器代替交换机

第六章 信息安全

第七章 软件工程基础

a. 软件定义:问题定义、可行性研究、详细需求分析

b. 软件开发:概要设计、详细设计、编码、测试

c. 软件运行和维护

  1. 软件工程过程

a. P:Plan 软件的功能和运行时限制

b. D:Do 软件开发,软件的设计和实现

c. C:Check 软件确认,软件测试,软件的验证和确认

d. A:Act 软件行动,软件的维护和更新

  1. 能力成熟度模型(CMM)

a. 初始级:无序、混乱

b. 可重复级:建立了基本的项目管理过程和实践来跟踪项目的费用、进度和功能

c. 已定义级:有标准、有规范,文档化、标准化

d. 已管理级:制定了软件过程和产品质量的度量标准

e. 优化级:不断改进软件过程和产品质量

  1. 能力成熟度模型集成(CMMI):初始级、已管理级、已定义级、量化管理级、优化级

  2. 软件过程模型

a. 瀑布模型:线性、顺序,适合需求明确、变更少的项目(如二次开发)

b. 原型模型:快速开发,适合需求不明确、变更多的项目(新项目)

c. 增量模型:按照功能优先级先开发核心功能

d. 螺旋模型:迭代、增量,适合需求不明确、变更多的项目,与原型类似,但是增加了风险分析

e. V 模型:增加了很多轮测试,贯穿整个开发过程

f. 喷泉模型:特点是面向对象的模型

  1. 统一过程模型(RUB)

a. 九个核心工作流:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理(所有制品的完整性和一致性)、项目管理、环境

b. 特点:用例驱动、迭代、增量

c. 以体系结构为中心,采用多个视图

  1. 软件文档

a. 用户文档:定义了功能和使用方法

b. 系统文档:定义了系统的体系结构、设计和实现

  1. 软件活动

a. 软件描述:定义了软件的功能和使用限制

b. 软件开发

c. 软件验证

d. 软件进化

  1. 基于构件的软件工程(CBSE)

a. 构件是对象

b. 构件组装:顺序、层次、叠加、参数不兼容、操作不兼容、操作不完备

a. 流程表示工具

b. 系统设计的基本原理

c. 模块内聚(从低到高)

d. 模块耦合(从低到高)

a. McCabe 度量法:

  1. 动态测试: 通过运行程序发现错误

a. 黑盒测试法(等价类划分、边界值分析、错误推测、因果图)

b. 白盒测试法(逻辑覆盖、循环覆盖、基本路径法)

c. 灰盒测试法

  1. 静态测试

a. 桌前检査(桌面检查)、代码审查和代码走查

a. 使用E-R图表示数据模型

b. 用DFD表示功能模型

c. 状态转换图表示行为模型

第八章 UML

a. 结构图(静态图)包括:类图、 对象图、构件图、部署图、 制品图、 包图、 组合结构图

b. 行为图(动态图)包括:用例图、顺序图、通信图(协作图)、定时图、交互概览图、活动图、状态图

第九章 软件架构设计

a. 业务需求:组织机构或客户对系统、产品高层次的目标要求

b. 用户需求:描述了用户使用产品必须要完成的任务,是用户对该软件产品的期望

c. 功能需求:也包括非功能需求,定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足业务需求

  1. 复用

a. 机会复用:只要发现有可以复用的,就复用

b. 系统复用:开发之前进行规划,决定哪些需要复用

a. 用例关系包括:泛化、包含、扩展

b. 类关系(UML类图关系):关联、聚合、组合、依赖、泛化、实现。

c. 构建用例模型经历4个阶段:识别参与者、合并需求获得用例、细化用例描述、调整用例模型

  1. TLS软件架构【TODO】层次特点

a. 提供了一种结构化的方法来描述和分析系统的质量属性

b. 6 要素:刺激源(用户请求)、刺激(用户的需求)、环境、制品(系统)、响应(系统响应、处理能力)、响应度量(响应时间)

  1. 敏感点:为了实现某种特定的质量属性,一个或多个系统组件具有的特性

  2. 权衡点:影响多个质量属性的特性,是【多个】质量属性的敏感点

  3. 风险点:某些做法有一些隐患可能导致一些问题

  4. 非风险点:不会造成潜在问题的架构决策的关注点

  5. 系统可靠性

a. 定义:系统在规定的时间内及规定的环境条件下,完成规定功能的能力,就是系统无故障运行的概率

b. 可靠性包括:成熟性、容错性、易恢复性和可靠性的依从性

c. 采用哪些技术:冗余技术、软件容错技术、双机容错技术、集群技术

  1. 架构权衡评估方法(ATAM):如何评估一个系统的质量

a. 描述和介绍阶段: 描述 ATAM 的方法、描述业务动机、描述架构

b. 调查和分析阶段:确定架构方法,生成质量属性效用树,分析架构方法

c. 测试阶段:讨论场景和对场景分级,分析架构方法

d. 最终阶段:描述评估结果

a. 软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则相冲突

b. 软件可靠性设计在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标

c. 软件可靠性设计应确定软件的可靠性目标,不能无限扩大,并且在功能、用户需求、开发费用之后考虑

  1. 可靠性设计技术

a. 容错设计、检错设计、多版本(N版本)设计、恢复块设计、降低复杂度

  1. 可靠性分析方法

a. 故障树分析方法

b. 失效模式与效应分析方法

a. 将数据表示和基本操作封装在对象中

c. 对象维护自身表示的完整性,对象之间通过消息机制进行通信,对象交互时需要知道彼此的标识,通过对象之间的协作完成计算过程

d. 适合:有用户交互、事件驱动的场景

e. 设计类:

f. 面向对象的分析模型

  1. 控制环路架构

a. 将过程输出的指定属性维护在一个特定的参考值

b. 构件包括过程变量、被控变量、输入变量、操纵变量和设定点等

c. 通过收集实际和理想的过程状态信息,并能调整过程变量使得实际状态趋于理想状态

d. 适合:自动收集信息对系统状态进行持续调整

  1. 面向服务的体系结构(SOA)

a. 定义:一种软件架构风格,允许通过网络将服务组合在一起

b. 关键原则:

c. 适合:需要集成多个系统的场景

d. 关键技术:Web Service、RESTful、SOAP、WSDL、UDDI

  1. 分布式微服务体系结构

a. 涵义:将应用程序构造为一组松散耦合的服务,微服务中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成

b. 关键原则:

c. 优点:

d. 缺点

a. 对系统进行功能分解

b. 采用【架构风格】实现质量属性与商业需求

c. 采用【软件模板】设计软件结构

  1. 6个主要活动(软件架构设计生命周期)

a. 架构需求分析:确定系统的关键需求,特别是非功能性需求

b. 架构设计:基于架构驱动因素,设计系统的高层次架构,选择适合的架构风格和设计模式

c. 架构复审(架构验证与评估):对架构设计进行分析,确保其满足关键需求

d. 架构实现:架构设计转化为具体的实现方案

e. 架构演化:系统随着需求的变化而不断演进

f. 架构文档化:使用统一的文档标准记录架构设计,包括系统结构、组件关系、设计决策和权衡分析等。

a. 失配的类型:

  1. 解决架构失配的方法:

a. 使用适配器模式

b. 使用中介者模式

c. 使用桥接模式

d. 使用外观模式

a. 一个严格定义的问题域和解决域

b. 具有普遍性,可以用于领域中某个特定领域的应用和开发

c. 对整个领域有合适程度的抽象

d. 具备该领域固定的典型开发过程中的可重用元素

  1. 形成由【领域参考模型、参考需求、参考架构】等组成的开发基础架构

  2. 基本活动包括:

a. 领域分析:获得领域模型,从而描述领域需求

b. 领域设计:获得DSSA(特定领域软件架构),描述领域模型中表示需求的解决方案

c. 领域实现:对基础软件架构进行实现

  1. 角色:领域专家、领域分析人员、领域设计人员、领域实现人员

  2. 三个层次:

a. 领域开发环境

b. 领域特定应用开发环境

c. 应用执行环境

  1. 建立过程是并发的、递归的和反复进行的

a. 不同阶段(如领域分析、体系结构设计、验证等)通常需要交替进行,反复优化以适应领域需求。

  1. 定义领域特定元素的阶段重点是:确定领域的通用功能和特定需求

  2. 定义领域模型和体系结构的阶段目标是:抽象出领域内通用的模型和体系结构

a. 对象组合成树形结构以表示“部分一整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性

b. 适用于:希望用户忽略组合对象与单个对象的不同

  1. 外观(Facade)模式

a. 子系统中的一组接口提供一个一致的界面

b. 外观模式定义了一个高层接口,使得子系统更易使用

  1. 享元(Flyweight)模式

a. 通过共享对象来支持大量细粒度的对象,对象的大多数状态都可变为外部状态

b. 享元模式使用共享技术有效地支持大量的细粒度对象

c. 适用于:系统中有大量相似对象,且这些对象的状态大部分可以外部化

  1. 装饰器模式

a. 动态地给一个对象添加一些额外的职责

b. 装饰器模式提供了比继承更灵活的替代方案

c. 适用于:需要扩展类的功能,或给类添加责任

  1. 工厂方法

a. 定义一个用于创建对象的接口,但由子类决定要实例化的类

b. 工厂方法使一个类的实例化延迟到其子类

c. 适用于:一个类不知道它所必须创建的对象的类

  1. 观察者模式

a. 定义了一种一对多的依赖关系,使得当一个对象改变状态时,所有依赖于它的对象都得到通知并被自动更新

b. 适用于:一个对象的改变需要同时改变其他对象,且不知道有多少个对象有待改变

  1. 中介者模式

a. 用一个中介对象来封装一系列的对象交互

b. 中介者使得各对象不需要显式地相互引用,从而使得耦合松散,而且可以独立地改变它们之间的交互

c. 适用于:对象之间有复杂的相互引用关系,导致难以独立地改变它们之间的交互

a. 定义:将系统分为多个层次,每个层次都有不同的功能和职责

b. 优点:

c. 缺点:性能开销、层次之间的耦合

d. 安全:层次之间依赖性强,某层出现问题会影响整体链路

e. 性能:层次之间的通信、调用会增加性能开销

  1. 客户端-服务器架构(C/S架构)

a. 定义:将系统分为客户端和服务器两部分,客户端负责用户界面和用户交互,服务器负责数据存储和处理

b. 优点:

c. 缺点:性能开销、网络延迟、安全性问题

d. 安全:客户端容易存在安全隐患,网络开放性,有被攻击的风险

  1. 微服务架构

a. 定义:将系统分为多个小的、独立的服务,每个服务负责一个特定的功能

b. 优点:

c. 缺点:开发复杂

d. 安全:需要设计额外的通信机制处理局部故障

  1. 浏览器-服务器架构(B/S架构)

a. 定义:将系统分为浏览器和服务器两部分,浏览器负责用户界面和用户交互,服务器负责数据存储和处理

b. 优点:

c. 缺点:性能开销、网络延迟、安全性问题

  1. 事件驱动架构

a. 定义:将系统分为多个事件源和事件处理器,事件源负责产生事件,事件处理器负责处理事件

b. 优点:

c. 缺点:容易发生死循环、难处理高并发问题

  1. 微内核架构

a. 定义:将系统分为核心和插件,核心负责基本功能,插件负责扩展功能

b. 优点:

c. 缺点:进程间通信开销大

第十章 案例分析的答题方法

a. 兼容性:能够接收处理现有的xxx数据

b. 可伸缩性:可以线性扩展,适用不断增长的xxx

c. 高吞吐量、可以削峰填谷

d. 低延迟:满足xxx对时间的需求

e. 持久化

f. 生态

g. 发布-订阅模式:多消费者独立、不相互影响

  1. 共同点和差异

a. 从使用场景、资源、成本、软硬件依赖、数据存储等

b. 从题目着手,在xxx 和 xxx 两个方面的差异,那就说谁比谁好

a. 扩展性:

b. 适用

  1. 分布式文件系统 HDFS

a. 数据可靠性:数据冗余存储(三副本)和自动容错机制(如数据块复制、心跳检测和数据块扫描等)

b. 伸缩性:可以添加节点来进行线性扩展,能够支持 PB 级数据存储

c. 性能方面:优化读写路径以及利用硬件特性(磁盘并行读写)

十一. 论文

a. 经历 xxx 个月的项目开发,该xxx系统顺利投入使用,协助客户xxx,运行至今客户反馈良好,该系统由于xxx等原因,建设过程困难重重,但由于笔者及项目团队成员十分重视项目的“题目”,最终保证了该项目的按质按量顺利交付。

b. 当然,在本项目中,还有一些不足,比如xxxx,在后续的学习和工作中,我将不断和同行进行交流,提升自己的专业技术水平,更好的完成系统架构设计工作。