信息系统架构设计理论与实践
本章导读
信息系统架构是企业信息化建设的核心,本章介绍信息系统的常用架构模型,从单体应用到分布式架构的演进。重点掌握 C/S 和 B/S 架构的层次划分、MVC 模式在 J2EE 中的应用、SOA 面向服务架构的核心理念,以及企业服务总线(ESB)的作用和特征。
学习目标
- 理解信息系统架构风格与分类
- 掌握二层、三层、多层 C/S 和 B/S 架构的区别
- 理解分布式计算架构的三种形式
- 掌握 SOA 面向服务架构的核心概念和实践方式
- 理解 ESB 企业服务总线的特征和作用
信息系统架构概述
架构风格与分类
信息系统架构可按以下维度分类:
mindmap
root((信息系统架构))
按部署方式
单体应用
分布式应用
按交互模式
客户机/服务器
浏览器/服务器
按服务模式
面向服务架构
微服务架构 信息系统常用架构模型
单体应用
单体应用(Monolithic Application)是最简单的架构形式,所有功能模块打包在一个应用中部署。
| 特点 | 说明 |
|---|---|
| 优点 | 开发简单、部署方便、测试容易 |
| 缺点 | 难以扩展、难以维护、技术栈受限 |
| 适用 | 小型项目、原型开发 |
客户机/服务器(C/S)架构 ⭐
客户机/服务器是信息系统中最常见的模式,客户端和服务器通过 TCP/UDP 进行请求和应答。
二层 C/S 架构
二层 C/S 是一种**胖客户端**架构:
┌─────────────────────┐ ┌─────────────────────┐
│ 前台客户端 │────→│ 后台数据库 │
│ (界面 + 业务逻辑) │ │ (数据存储) │
└─────────────────────┘ └─────────────────────┘
| 特点 | 说明 |
|---|---|
| 客户端 | 包含界面和大部分业务逻辑(胖客户端) |
| 服务端 | 主要负责数据存储 |
| 缺点 | 客户端维护困难、安全性差、网络负担重 |
三层 C/S 和 B/S 架构
三层架构将业务逻辑从客户端分离出来:
graph LR
A[客户端/浏览器] --> B[应用服务器]
B --> C[数据库服务器]
style A fill:#e3f2fd
style B fill:#fff3e0
style C fill:#e8f5e9 | 架构 | 组成 | 客户端特点 |
|---|---|---|
| 三层 C/S | 客户端 + 应用服务器 + 数据库 | 瘦客户端(仅界面) |
| 三层 B/S | 浏览器 + Web 服务器 + 数据库 | 最瘦客户端(浏览器) |
B/S 架构特点:
- 本质是浏览器与服务器采用 HTTP 协议(基于 TCP/IP 或 UDP)
- 零客户端安装,维护成本低
- 跨平台,兼容性好
通信协议选择:
| 协议 | 特点 | 适用场景 |
|---|---|---|
| TCP/IP 协议 | 可靠传输 | 通用场景 |
| Socket 自定义协议 | 灵活高效 | 特殊需求 |
| RPC 协议 | 远程过程调用 | 分布式系统 |
| CORBA/IIOP 协议 | 跨语言对象调用 | 异构系统集成 |
| Java RMI 协议 | Java 远程方法调用 | 纯 Java 环境 |
| JMS 协议 | 消息服务 | 异步通信 |
| HTTP 协议 | Web 标准协议 | Web 应用 |
多层 C/S 和 B/S 架构
多层架构在三层基础上增加中间件/应用层:
┌──────────┐ ┌──────────┐ ┌──────────────┐ ┌──────────┐
│ 客户端 │ → │ 应用服务 │ → │ 中间件/应用层 │ → │ 数据库 │
└──────────┘ └──────────┘ └──────────────┘ └──────────┘
中间件/应用层的作用:
| 作用 | 说明 |
|---|---|
| 提高并发性能 | 连接池、缓存、负载均衡 |
| 请求转发 | 业务逻辑处理、路由分发 |
| 增加数据安全性 | 访问控制、数据加密 |
| 可伸缩性 | 按需扩展 |
分布式计算架构 ⭐
客户机/服务器系统开发时可以采用不同的分布式计算架构:
graph TB
subgraph 分布式表示架构
A1[客户机] --> A2[表示层<br>表示逻辑层]
A2 --> A3[服务器]
A3 --> A4[应用逻辑层<br>数据处理层<br>数据层]
end
subgraph 分布式数据架构
B1[客户机] --> B2[表示层<br>表示逻辑层<br>应用逻辑层]
B2 --> B3[服务器]
B3 --> B4[数据处理层<br>数据层]
end
subgraph 分布式数据和应用架构
C1[客户机] --> C2[表示层<br>表示逻辑层]
C2 --> C3[应用服务器]
C3 --> C4[应用逻辑层]
C4 --> C5[数据服务器]
C5 --> C6[数据处理层<br>数据层]
end | 架构类型 | 客户机职责 | 服务器职责 |
|---|---|---|
| 分布式表示架构 | 表示层 + 表示逻辑层 | 应用逻辑层 + 数据处理层 + 数据层 |
| 分布式数据架构 | 表示层 + 表示逻辑层 + 应用逻辑层 | 数据处理层 + 数据层 |
| 分布式数据和应用架构 | 表示层 + 表示逻辑层 | 应用服务器(应用逻辑层)+ 数据服务器(数据层) |
MVC 在 J2EE 中的应用
在 J2EE 架构中,MVC 模式的实现形式:
graph LR
A[浏览器<br>View] --> B[Web服务器<br>Controller]
B --> C[数据库/应用层<br>Model]
style A fill:#e3f2fd
style B fill:#fff3e0
style C fill:#e8f5e9 - View:Web 浏览器
- Controller:Web 服务器(可包含中间件/应用层)
- Model:根据实际情况与 MV 一起置于 Web 服务器,或单独置于应用层
面向服务架构(SOA)⭐
SOA 概念
SOA 定义
SOA(Service-Oriented Architecture)是一个组件模型,它将应用程序的不同功能单元(称为**服务**)通过定义良好的**接口和契约**联系起来。
SOA 核心特征
| 特征 | 说明 |
|---|---|
| 服务独立性 | 服务能提供一组整体功能,去掉任何一层都无法正常工作 |
| 接口中立 | 接口独立于硬件平台、操作系统和编程语言 |
| 松耦合 | 服务之间通过标准接口交互 |
| 可重用 | 服务可被多个应用复用 |
SOA 实现方式
SOA 的实现可以借助中间件:
graph TB
A[消息中间件] --> C[SOA 实现]
B[交易中间件] --> C
C --> D[Web Service<br>最典型实现] Web Service 特点:
- 两个互联网应用之间互相开放功能模块、函数、过程等"服务"
- 通过**消息机制**或**远程过程调用(RPC)**调用对方服务
SOA 主要实践
| 实践方式 | 说明 |
|---|---|
| 异构系统集成 | 整合不同技术栈的系统 |
| 同构系统聚合 | 合并相同技术栈的系统 |
| 联邦架构 | 多系统协作,保持自治 |
企业服务总线(ESB)⭐
ESB 概念
企业服务总线(Enterprise Service Bus)是企业应用间信息交换的公共通道。
ESB 核心特征
graph TB
subgraph ESB 核心功能
A[服务代理功能]
B[服务注册表]
C[协议消息处理]
D[数据分发]
end
E[服务提供者] --> A
A --> F[服务消费者]
B --> A | 特征 | 说明 |
|---|---|
| 连接软件系统 | 提供服务代理功能和服务注册表 |
| 消息处理 | 按协议消息头进行数据、请求、回复的接收和分发 |
| 技术实现 | 可基于消息中间件、事务中间件、CORBA/IIOP 协议构建 |
ESB 适用场景
典型场景
当企业进行系统集成时,面临以下情况:
- 业务系统的**运行平台和开发语言差异较大**
- 系统使用的**通信协议和数据格式各不相同**
解决方案:
- 采用**ESB 总线技术**对传输协议和数据格式进行转换与适配
- 使用**基于工作流**的功能关系定义方式灵活定义系统功能间的协作关系
ESB vs EDB
| 类型 | 全称 | 侧重点 |
|---|---|---|
| ESB | 企业服务总线 | 服务集成、协议转换 |
| EDB | 企业数据总线 | 数据交换、数据集成 |
本章小结
核心知识点
-
C/S 架构演进:二层(胖客户端)→ 三层(瘦客户端)→ 多层(中间件)
-
分布式计算架构:
- 分布式表示架构
- 分布式数据架构
-
分布式数据和应用架构
-
SOA 核心理念:服务独立、接口中立、松耦合、可重用
-
ESB 作用:服务代理、协议转换、消息分发
架构对比
| 架构 | 客户端 | 中间层 | 服务端 |
|---|---|---|---|
| 二层 C/S | 界面 + 业务逻辑 | 无 | 数据库 |
| 三层 C/S | 界面 | 业务逻辑 | 数据库 |
| 三层 B/S | 浏览器 | Web 服务器 | 数据库 |
| 多层 | 界面 | 应用 + 中间件 | 数据库 |
考试重点
| 知识点 | 考查形式 |
|---|---|
| C/S 层次划分 | 识别各层职责 |
| 分布式计算架构 | 判断各层分布位置 |
| SOA 特征 | 概念理解与应用 |
| ESB 作用 | 场景分析与选择 |
学习建议
- 层次架构:理解每一层的职责边界
- 分布式架构:掌握三种分布式计算架构的区别
- SOA/ESB:重点理解在异构系统集成中的应用