架构设计基础 学习笔记(第 2 部分)
3.2 详细说明
3.2.1 系统架构
定义:最全面的架构设计,涵盖系统的各个方面
包含内容:
- 系统总体结构
- 软件组件
- 硬件组件
- 网络拓扑
- 数据存储
- 部署方案
示例图示:
code
┌─────────────────────────────────────────┐
│ 系统架构总览 │
├─────────────────────────────────────────┤
│ 客户端层 │
│ ├── Web 应用 │
│ ├── 移动端 APP │
│ └── 小程序 │
├─────────────────────────────────────────┤
│ 网络层 │
│ ├── CDN │
│ ├── 负载均衡 │
│ └── API 网关 │
├─────────────────────────────────────────┤
│ 应用层 │
│ ├── 前端服务 │
│ ├── 后端服务 │
│ └── 微服务集群 │
├─────────────────────────────────────────┤
│ 数据层 │
│ ├── MySQL 主从 │
│ ├── Redis 缓存 │
│ └── MongoDB 文档库 │
└─────────────────────────────────────────┘3.2.2 软件/应用架构
定义:设计软件的高层结构,关注组件和交互方式
核心要素:
- 主要组件划分
- 组件间交互方式
- 设计模式应用
- 技术栈选择
常见模式:
javascript
// 1. MVC 架构
Model-View-Controller
// 2. MVVM 架构(Vue、React 常用)
Model-View-ViewModel
// 3. 微服务架构
Microservices Architecture
// 4. 单体架构
Monolithic Architecture前端应用架构示例:
javascript
// Vue 项目应用架构
src/
├── api/ // API 接口层
├── assets/ // 静态资源
├── components/ // 组件层
├── composables/ // 组合式函数(Vue 3)
├── directives/ // 自定义指令
├── router/ // 路由配置
├── store/ // 状态管理
├── utils/ // 工具函数
└── views/ // 页面视图3.2.3 数据架构
定义:设计数据的存储、处理、访问和保护方案
核心内容:
- 数据库设计
- 数据模型设计
- 数据流程图
- 数据管理策略
数据架构设计要点:
javascript
// 数据库选型决策树
const databaseSelection = {
relational: {
suit: '结构化数据、事务性强',
examples: ['MySQL', 'PostgreSQL', 'Oracle']
},
nosql: {
document: { examples: ['MongoDB'], suit: '文档型数据' },
keyvalue: { examples: ['Redis'], suit: '缓存、会话' },
column: { examples: ['Cassandra'], suit: '大数据分析' },
graph: { examples: ['Neo4j'], suit: '关系网络' }
},
newsql: {
examples: ['TiDB', 'CockroachDB'],
suit: '分布式事务场景'
}
}数据架构示例:
sql
-- 电商系统数据库设计示例
-- 用户表
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_email (email)
);
-- 订单表
CREATE TABLE orders (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
total_amount DECIMAL(10,2) NOT NULL,
status ENUM('pending', 'paid', 'shipped', 'completed'),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
INDEX idx_user_status (user_id, status)
);3.2.4 网络架构
定义:设计系统的通信网络方案
核心内容:
- 网络设备配置
- 通信协议选择
- 路由策略设计
- 网络安全防护
网络架构示例:
code
互联网
↓
CDN (内容分发网络)
↓
防火墙
↓
负载均衡器
↓
┌─────────┬─────────┐
│ Web服务器1 │ Web服务器2 │
└─────────┴─────────┘
↓ ↓
应用服务器集群
↓
数据库主从复制3.2.5 安全架构
定义:保护系统和数据安全的整体方案
核心内容:
- 安全策略制定
- 加密技术应用
- 身份验证机制
- 权限控制系统
安全架构设计示例:
javascript
// 安全架构多层防护
const securityLayers = {
// 1. 网络层安全
network: {
https: 'SSL/TLS 加密传输',
firewall: '防火墙规则配置',
waf: 'Web 应用防火墙'
},
// 2. 应用层安全
application: {
authentication: 'JWT/OAuth 2.0 身份验证',
authorization: 'RBAC 权限控制',
xss: 'XSS 攻击防护',
csrf: 'CSRF Token 验证'
},
// 3. 数据层安全
data: {
encryption: '敏感数据加密存储',
backup: '数据备份策略',
audit: '操作审计日志'
},
// 4. 运维层安全
ops: {
monitor: '安全监控告警',
patch: '定期安全补丁',
drill: '安全演练'
}
}