架构的分类
按软件层划分
- 网络架构
- 系统架构
- 数据架构
- 业务架构
- 应用架构
- 平台架构
按解决的问题领域划分
- 电商架构
- 支付架构
- 搜索架构
- 安全架构
- 性能架构
- 游戏架构
- 多媒体架构
- 等
按工作深度划分
- 集成架构
- 业务架构
- 模块架构
- 框架架构
- 中间件架构
- 软件架构
- 引擎架构
- 服务器架构
- 编程语言架构
架构设计类型
架构设计可分为:
- 集中式架构
- 分层架构
- 分布式架构
- SOA架构
- 面向资源架构
进程间通信(IPC)
进程间通信(IPC,Inter-Process Communication)指至少两个进程或线程间传送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。这些进程可以运行在同一计算机上或网络连接的不同计算机上。
IPC 技术包括:
- 消息传递
- 同步
- 共享内存
- 远程过程调用
IPC 是一种标准的 Unix 通信机制。
IPC 的两种类型
本地过程调用(LPC)
- 用于多任务操作系统中,使得同时运行的任务能互相会话。
- 这些任务共享内存空间使任务同步和互相发送信息。
远程过程调用(RPC)
- 类似于 LPC,但在网络上工作。
- 最初出现在 Sun 微系统公司和 HP 公司的 UNIX 操作系统中。
通过 IPC 和 RPC,程序能利用其它程序或计算机处理的进程。客户机/服务器模式计算把远程过程调用与消息传递等技术作为系统间通信的一种机制。
架构设计的目的
架构设计的主要目的是解决软件系统复杂度带来的问题。
网关扩展与任务分发
单个网关扩展成多个后,需要将任务分发给不同的网关。常见方法包括:
- DNS 轮询
- 智能 DNS
- CDN(内容分发网络)
- GSLB 设备(全局负载均衡)
高可用性
高可用通过冗余备份和失效转移实现。
设计原则
- 合适
- 简单
- 演化
微服务能力要求
每个微服务都应具备以下能力:
- 稳定性
- 可靠性
- 伸缩性
- 容错能力
- 高性能
- 可监控
- 文档化
- 灾备能力
补充说明
Kafka 支持消息顺序,但一台 Broker 宕机后会产生消息乱序。
软件架构核心模式精要
架构模式概览
| 架构模式 | 核心思想 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 单体架构 | 所有功能高度耦合,集中部署 | 简单、直接 | 难维护、难扩展 | 小型应用或初期项目 |
| 分层架构 | 按职责水平分离,上层调用下层 | 结构清晰、易管理 | 易产生层级耦合 | 传统企业级应用 |
| 微服务架构 | 按业务拆分为自治服务,松耦合 | 弹性、可扩展、技术灵活 | 分布式系统复杂 | 复杂的大型系统 |
| 事件驱动架构 | 组件通过事件异步通信 | 高扩展性、高响应性 | 最终一致性、复杂度高 | 实时系统、数据流处理 |
| 微核架构 | 核心系统 + 插件模块,动态扩展 | 灵活性好、隔离性强 | 契约设计复杂 | IDE、浏览器、可扩展应用 |
| 无服务器架构 | 函数为单位,事件触发,云托管 | 零运维、按需付费 | 冷启动、厂商锁定 | 事件驱动、突发任务 |
| 云架构 | 云环境设计原则集合,多模式综合 | 全球部署、高可用性 | 云厂商依赖 | 需要横向扩展的现代应用 |
详细说明
1. 单体架构
- 核心: 所有功能模块高度耦合,集中开发、部署为一个整体
- 优点: 简单、直接
- 缺点: 难维护、难扩展
- 适用: 小型应用或初期项目
2. 分层架构
- 核心: 按职责(表现层、业务层、数据层)水平分离,上层调用下层。层之间通过接口通信。
- 优点: 结构清晰、易管理
- 缺点: 易产生层级耦合
- 适用: 传统企业级应用
3. 微服务架构
- 核心: 按业务能力拆分为小规模、自治的服务,松耦合、独立部署。常见模式:restful api模式、restful应用模式、集中消息模式
- 优点: 弹性、可扩展、技术灵活
- 缺点: 分布式系统复杂(网络、数据、运维)
- 适用: 复杂的大型系统
4. 事件驱动架构
- 核心: 组件通过事件异步通信,高度解耦。主要部件:事件、事件队列、分发器、事件通道、事件处理
- 优点: 高扩展性、高响应性
- 缺点: 最终一致性、复杂度高
- 适用: 实时系统、数据流处理
5. 微核架构
- 核心: 最小核心系统(插件引擎)+ 多个功能插件模块
- 优点: 极强的灵活性和可扩展性
- 缺点: 核心与插件契约设计复杂
- 适用: IDE、浏览器、需要第三方扩展的应用
6. 无服务器架构
- 核心: 以函数为单位运行,由事件触发,云平台托管基础设施
- 优点: 零运维、按需付费、自动伸缩
- 缺点: 冷启动、厂商锁定
- 适用: 事件驱动型、突发负载任务
7. 云架构
- 核心: 云环境中构建应用的设计原则集合,多模式综合。主要部分:处理单元、虚拟中间件
- 优点: 全球部署、高可用性、成本优化
- 缺点: 云厂商依赖、网络延迟
- 适用: 需要横向扩展的现代应用
系统架构的常用建模方法
可以将分成4种:结构型、框架模型、动态模
型和过程模型。
- 结构模型:这是一个最直观、最普遍的建模方法。此方法以架构的构件、连接件和其他概念来刻画结构。通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格和性质。研究结构模型的核心是架构描述语言。
- 框架模型:框架模型与结构模型类似,但它不太侧重描述结构的细节,而更侧重整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应问题的结构。
- 动态模型:动态模型是对结构或框架模型的补充,主要研究系统的“大颗粒”行为的性质。例如,描述系统的重新配置或演化。这里的动态可以是指系统总体结构的配置、建立或拆除通信或计算的过程这类系统模型常是激励型的。
- 过程模型:过程模型是研究构造系统的步骤和过程,其结构是遵循某些过程脚本的结果。
架构风格
| 架构风格 | 适用场景 |
|---|---|
| 管道-过滤器风格 | 用于将系统分成若干独立的步骤 |
| 主程序/子系统和面向对象的架构风格 | 用于对组件内部进行设计 |
| 虚拟机风格 | 用于构造解释器或专家系统 |
| C/S和B/S风格 | 适合于数据和处理分布在一定范围,通过网络连接构成系统 |
| 平台/插件风格 | 用于具有插件扩展功能的应用程序 |
| MVC风格 | 用于用户交互程序的设计 |
| SOA风格 | 用在企业集成等方面 |
| C2风格(Component-Connector(组件-连接器)架构风格) | 用于GUI软件开发,用以构建灵活和可扩展的应用系统等 |
C2架构风格解析
| 特性维度 | 详细说明 |
|---|---|
| 全称 | Component-Connector(组件-连接器)架构风格 |
| 核心思想 | 通过严格的组件层级规则和异步消息机制实现松耦合 |
| 基本组成 | 组件(独立计算单元) +连接器(消息路由组件) |
| 通信方式 | 组件间通过连接器进行异步消息通知(非直接调用) |
| 关键约束 | 1. 顶层组件不允许直接通信 2. 底层组件通信必须通过上层连接器 3. 组件间保持松耦合关系 |
| 主要优势 | • 极高的系统灵活性 • 良好的可扩展性 • 组件可独立替换和修改 • 支持并发处理 |
| 典型应用 | •GUI应用程序开发 • 需要高度灵活性的软件系统 • 可扩展应用框架 |
C2风格通过严格的分层消息传递机制,为GUI系统提供了高度灵活和可扩展的架构解决方案,特别适合需要频繁交互和动态扩展的图形化应用场景。
安全攸关软件的安全性设计
主要因素:目标、过程、数据
目标
| 等级 | 失效状态 | 简要说明 | 目标数量 |
|---|---|---|---|
| A级 | 灾难性的 | 软件异常会导致的后果是:航空器无法安全飞行和着陆 | 66 |
| B级 | 危害性的 | 软件异常会导致的后果是:严重降低了航空器或机组在克服不利运行情况时的能力 | 65 |
| C级 | 严重的 | 软件异常会导致的后果是:显著降低了航空器或机组在克服不利运行情况时的能力 | 56 |
| D级 | 不严重的 | 软件异常会导致的后果是:轻微降低了航空器或机组在克服不利运行情况时的能力 | 28 |
| E级 | 没有影响的 | 软件异常会导致的后果是:不会影响航空器或机组任何能力 | 0 |
过程
- 软件计划过程(需求过程、设计过程、编码过程、集成过程)
- 软件开发过程
- 软件综合过程(验证过程、配置管理过程、质量保证过程、审定联络过程)
数据
将生命周期中产生的文档、代码、报表、记录等所有产品统称为软件生命周期数据。
计算机网络
功能
- 数据通信
- 资源共享
- 管理集中化
- 分布式处理
- 负载均衡
指标
- 性能指标
- 速率
- 带宽
- 吞吐量
- 时延(发送时延、传播时延、处理时延、排队时延)
- 往返时间(RTT)
- 利用率(信道利用率、网络利用率)
- 非性能指标
- 费用
- 质量
- 标准化
- 可靠性
- 可扩展和可升级性
- 易管理性和维护性
通信技术
信道
- 物理信道 - 由传输介质和设备组成 - 有线信道、无线信道
- 逻辑信道 - 发送端、接收端间的虚拟线路
信道容量
C = B*log_{2}(1+S/N)- C代表信道容量,单位是 b/s
- B代表信号带宽,单位是 Hz
- S代表信号平均功率,单位是 W
- N代表噪声平均功率,单位是 W
- S/N代表信噪比,单位是 dB(分贝)
以太网
- 最大帧长1518字节(最大数据帧1500字节、最小帧长64字节-不足时加入填充位)
- 帧头设有32位用于CRC32校验(参与校验的是帧头中除前导字段和帧起始符之外的部分)
DMAC(目的MAC地址) - SMAC(源MAC地址) - Length/Type(2字节数据,值大于1500时代表数据帧类型,值小于1500则代表数据帧的长度) - Data/Pad(数据/填充字符) - FCS(帧校验字符)
无线局域网(WLAN)
- 以微波、激光、红外线等无线电波作为传输介质
- 假设WLAN需无线网卡和访问接入点AP
- 安装便捷、使用灵活、经济节约、易于扩展
广域网(WAN)
城域网(MAN)
- 主要技术:DQDB(由双总线构成) - IEEE802.6
5G
- 高速率、低时延、大连接
- 网络切片
OSI
- 应用层
- 表示层
- 会话层
- 传输层 - TCP、UDP
- 网络层 - 路由器 - IP、ICMP、IGMP、ARP、RARP
- 数据链路层 - 网桥、交换机(自动寻址与交换、避免端口冲突、提高网络吞吐)
- 物理层 - 中继器(识别信号然后再生信号,可以连接不同物理介质)
TCP/IP
- 应用层(应用层、表示层、会话层)
- 传输层(传输层)
- 网络层(网络层)
- 网络接口层(数据链路层、物理层)
交换机 - 数据链路层
功能
- 集线功能
- 中继功能 - 转发帧时重新生成不失真的信号
- 桥接功能
- 隔离冲突域
原理
- 转发路径学习 - 记录数据帧中的源MAC地址建立MAC地址表
- 数据转发 - 根据MAC地址表进行转发
- 数据泛洪 - MAC地址表不存在时想所有端口转发(不包含源端口)
- 链路地址更新 - MAC地址表每隔一定时间更新一次(如300s)
协议
- 生成树协议STP - 避免环路
- 链路聚合 - 提高带宽、提升链路可靠性
路由器 - 网络层
- 在多个网络上交换和路由数据包
- 根据信道情况自动选择和设定路由
- 按最佳路径、先后顺序发送信号
- 路由表 - 包含网络目的地址、端口、下一跳地址、发送代价
协议
- 内部网关协议IGP
- RIP-1、RIP-2 路由信息协议,基于距离矢量算法的路由协议,利用跳数作为计量标准
- IGRP - 内部网关路由协议 - 思科的专有协议
- EIGRP - 增强型IGRP,拓扑结构变化时才发送路由更新
- IS-IS - 中间系统到中间系统,基于链路状态路由协议
- OSPF - 开放式最短路径优先,属于链路状态路由协议。提出了区域的概念
- 外部网关协议EGP
- BGP协议
网络工程
- 网络规划
- 网络设计
- 网络实施
UML
常用图
- 用例图
由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。用例之间的关系有包含、扩展、泛化。 - 类图
展现了一组对象、接口、协作和它们之间的关系。类之间的关系有关联、依赖、实现、泛化。 - 对象图
描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。 - 构件图
描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。 - 组合结构图
用于画出结构化类的内部内容。 - 顺序图(序列图)
由一组对象或参与者以及它们之间可能发送的消息构成。强调消息的时间次序的交互图。 - 通信图
强调收发消息的对象或参与者的结构组织。强调的是对象之间的组织结构(关系)。 - 定时图
强调消息跨越不同对象或参与者的实际时间,而不仅仅只是关心消息的相对顺序。 - 状态图
用来描述一个特定的对象所有可能的状态,以及由于各种事件的发生而引起的状态之间的转移和变化。 - 活动图
将进程或其他计算的结构展示为计算内部一步步的控制流和数据流。可并行。 - 部署图
软件和硬件组件之间的物理关系以及处理节点的组件分布情况。 - 制品图
描述计算机中一个系统的物理结构通常与部署图一起使用。 - 包图
描述由模型本身分解而成的组织单元,以及它们之间的依赖关系。 - 交互概览图
是活动图和顺序图的混合物
UML系统架构视图与对应图表
| 视图 | 要点描述 | 图形表示 | 关心人员 |
|---|---|---|---|
| 用例视图 | 描述系统的功能需求,系统功能模型 | 用例图 | 客户、分析者、设计者、开发者和测试者 |
| 逻辑视图 | 描述如何实现系统内部的功能,系统的静态结构和应发送消息而出现的动态协作关系 | 类图、对象图、状态图、顺序图、协作图和活动图 | 系统分析和设计人员 |
| 进程视图 | 描述系统的并发性,并处理这些线程间的通信和同步;它将系统分割成并发执行的控制线程及处理这些线程的通信和同步 | 状态图、顺序图、协作图、活动图、构件图和部署图 | 开发者和系统集成者 |
| 实现视图 | 描述系统代码构件组织和实现模块及它们之间的依赖关系 | 构件图 | 设计者、开发者和测试者 |
| 部署视图 | 定义系统中软硬件的物理体系结构及连接、哪个程序或对象驻留在哪台计算机上执行 | 部署图 | 开发者、系统集成者和测试者 |
注:用例视图是系统的中心视图,它定义了系统的外部行为,是其他视图的核心和基础。
多媒体概述
媒体是承载信息的载体,即信息的表现形式(如文字、声音、图像、动画、视频等)。
媒体分为以下五类:
① 感觉媒体
- 定义:指用户接触信息的感觉形式,直接作用于人的感官,产生感觉(视、听、嗅、味、触觉)的媒体。
- 举例:视觉、听觉、触觉。
② 表示媒体
- 定义:指信息的表示形式。感觉媒体转换成表示媒体后,能够在计算机上进行加工处理和传输。
- 举例:图像、声音、视频等。
③ 表现媒体(显示媒体)
- 定义:表现和获取信息的物理设备。
- 分类举例:
- 输入表现媒体:键盘、鼠标、扫描仪、话筒、数码相机、摄像机。
- 输出表现媒体:显示器、打印机、音箱、投影仪。
④ 存储媒体
- 定义:用于存储表示媒体的物理介质。
- 举例:硬盘、软盘、光盘、ROM 及 RAM 等。
⑤ 传输媒体
- 定义:传输表示媒体(即数据编码)的物理介质。
- 举例:电缆、光缆、电磁波等。
系统工程
为了最好地实现系统,对系统组成要素、组织结构、信息流、控制机构等进行分析研究的科学方法
目的
- 最优规划
- 最优设计
- 最优管理
- 最优控制
系统工程方法
- 霍尔的三维结构:用于组织喝管理大型工程建设项目
- 时间维度:系统工程活动从开始到结束按时间顺序排列的全过程
- 规划
- 拟定方案
- 研制
- 生产
- 安装
- 运行
- 更新
- 逻辑维度:时间维度的每个阶段内要进行的工作内容喝应该遵循的思维程序
- 明确问题
- 确定目标
- 系统综合
- 系统分析
- 优化
- 决策
- 实施
- 知识维度:专业科学知识
- 时间维度:系统工程活动从开始到结束按时间顺序排列的全过程
- 切克兰德方法
P.切克兰德把霍尔方法论称为“硬科学”方法论,他自己的方法论称为“软科学”方法论。其核心不是“最优化”,而是“比较”与“探寻”。- 工作过程
- 认识问题
- 根底定义
- 建立概念模型
- 比较及探寻
- 选择
- 设计与实施
- 评估与反馈。
- 工作过程
- 并行工程方法:对产品及相关过程进行并行、集成化处理的系统方法和综合技术
- 产品的设计开发期间,以最快的速度按要求的质量完成。
- 各项工作由此相关的项目小组完成,对出现的问题协调解决。
- 依据适当的信息系统工具
- 综合集成法:分为简单系统和巨系统
- 整体论原则
- 相互联系原则
- 有序性原则
- 动态原则
- WSR系统方法:物理、事理、人理方法论的简称
- 理解意图
- 制定目标
- 调查分析
- 构造策略
- 选择方案
- 协调关系
- 实现构想
生命周期
- 探索性研究阶段 — 识别利益攸关者的需求,探索创意和技术。
- 概念阶段 — 细化利益攸关者的需求,探索可行概念,提出有望实现的解决方案。