{T}

架构设计基础 学习笔记(第 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: '安全演练'
  }
}

四、架构设计模式