作者: RJ.Wang
邮箱: wangrenjun@gmail.com
创建时间: 2025-12-25
更新时间: 2025-12-25
📋 目录
🎨 Mermaid 流程图
标准三层架构
graph TB
%% 用户和外部访问
User[👤 用户] --> Internet[🌐 Internet]
Internet --> CloudFront[☁️ CloudFront CDN]
%% VPC 边界
subgraph VPC["🏢 VPC (10.0.0.0/16)"]
%% 公有子网
subgraph PublicSubnet["🌍 Public Subnet (10.0.1.0/24)"]
ALB[⚖️ Application Load Balancer]
NAT[🔄 NAT Gateway]
end
%% 私有子网 - 应用层
subgraph PrivateSubnet1["🔒 Private Subnet - App (10.0.2.0/24)"]
EC2_1[💻 EC2 Instance 1<br/>Web Server]
EC2_2[💻 EC2 Instance 2<br/>Web Server]
end
%% 私有子网 - 数据层
subgraph PrivateSubnet2["🔒 Private Subnet - DB (10.0.3.0/24)"]
RDS_Primary[(🗄️ RDS Primary<br/>MySQL)]
RDS_Standby[(🗄️ RDS Read Replica)]
end
end
%% S3 存储(VPC 外部)
S3[📦 S3 Bucket<br/>Static Assets]
%% 连接关系
CloudFront --> ALB
CloudFront --> S3
ALB --> EC2_1
ALB --> EC2_2
EC2_1 --> RDS_Primary
EC2_2 --> RDS_Primary
EC2_1 --> S3
EC2_2 --> S3
RDS_Primary --> RDS_Standby
%% 样式定义
classDef aws fill:#ff9900,stroke:#232f3e,stroke-width:2px,color:#fff
classDef compute fill:#ec7211,stroke:#232f3e,stroke-width:2px,color:#fff
classDef database fill:#3498db,stroke:#232f3e,stroke-width:2px,color:#fff
classDef storage fill:#569a31,stroke:#232f3e,stroke-width:2px,color:#fff
classDef network fill:#9d5025,stroke:#232f3e,stroke-width:2px,color:#fff
classDef user fill:#6c757d,stroke:#232f3e,stroke-width:2px,color:#fff
%% 应用样式
class CloudFront,ALB,NAT network
class EC2_1,EC2_2 compute
class RDS_Primary,RDS_Standby database
class S3 storage
class User user
微服务架构版本
graph TB
%% 用户层
User[👤 用户] --> API_Gateway[🚪 API Gateway]
%% VPC 容器
subgraph VPC["🏢 VPC"]
%% 负载均衡层
subgraph LB_Layer["⚖️ 负载均衡层"]
ALB_Web[ALB - Web]
ALB_API[ALB - API]
end
%% 微服务层
subgraph Microservices["🔧 微服务层"]
Auth_Service[🔐 认证服务<br/>ECS/Fargate]
User_Service[👥 用户服务<br/>ECS/Fargate]
Order_Service[📦 订单服务<br/>ECS/Fargate]
Payment_Service[💳 支付服务<br/>ECS/Fargate]
end
%% 数据层
subgraph Data_Layer["🗄️ 数据层"]
RDS_Users[(👥 用户数据库)]
RDS_Orders[(📦 订单数据库)]
ElastiCache[⚡ Redis 缓存]
end
end
%% 外部服务
S3[📦 S3 存储]
SQS[📨 SQS 队列]
%% 连接关系
API_Gateway --> ALB_Web
API_Gateway --> ALB_API
ALB_Web --> Auth_Service
ALB_API --> User_Service
ALB_API --> Order_Service
ALB_API --> Payment_Service
User_Service --> RDS_Users
Order_Service --> RDS_Orders
Auth_Service --> ElastiCache
Order_Service --> SQS
Payment_Service --> S3
🎭 ASCII 艺术图
经典三层架构
🌐 Internet
│
┌────────▼────────┐
│ ☁️ CloudFront │
│ CDN │
└────────┬────────┘
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ │
┌─────────┐ ┌─────────┐ │
│ 📦 S3 │ │ ⚖️ ALB │ │
│ Bucket │ │ │ │
└─────────┘ └────┬────┘ │
│ │
┌─────────────┼─────────────┐ │
│ 🔒 Private Subnet │ │
│ ┌─────────┐ ┌─────────┐ │ │
│ │💻 EC2-1 │ │💻 EC2-2 │ │ │
│ └────┬────┘ └────┬────┘ │ │
└───────┼───────────┼──────┘ │
│ │ │
┌───────▼───────────▼──────┐ │
│ 🗄️ Database Tier │ │
│ ┌─────────┐ ┌─────────┐ │ │
│ │RDS Main │ │RDS Read │ │ │
│ └─────────┘ └─────────┘ │ │
└─────────────────────────┘ │
│
└──────────────────────────────────────┘
网络流量图
用户请求流程:
👤 → 🌐 → ☁️ → ⚖️ → 💻 → 🗄️
│ │ │ │ │ │
│ │ │ │ │ └─ 数据查询
│ │ │ │ └────── 业务逻辑
│ │ │ └─────────── 负载分发
│ │ └──────────────── 内容缓存
│ └───────────────────── 网络传输
└────────────────────────── 用户交互
静态资源流程:
👤 → 🌐 → ☁️ → 📦
│ │ │ │
│ │ │ └─ S3 存储
│ │ └────── CDN 缓存
│ └─────────── 网络传输
└──────────────── 用户请求
🌳 层次结构图
服务层次
AWS 三层架构
├── 🌐 边缘层 (Edge Layer)
│ ├── ☁️ CloudFront
│ │ ├── 全球 CDN 节点
│ │ ├── SSL/TLS 终止
│ │ └── 缓存策略
│ └── 📦 S3 Bucket
│ ├── 静态网站托管
│ ├── 图片/CSS/JS 资源
│ └── 版本控制
│
├── 🏢 VPC 网络层 (Network Layer)
│ ├── 🌍 公有子网 (Public Subnet)
│ │ ├── ⚖️ Application Load Balancer
│ │ │ ├── 健康检查
│ │ │ ├── SSL 证书
│ │ │ └── 路由规则
│ │ └── 🔄 NAT Gateway
│ │ ├── 出站网络访问
│ │ └── 弹性 IP
│ │
│ ├── 🔒 私有子网 - 应用层 (App Tier)
│ │ ├── 💻 EC2 Instance 1
│ │ │ ├── Web 服务器 (Nginx/Apache)
│ │ │ ├── 应用服务器 (Node.js/Python)
│ │ │ └── 监控代理
│ │ └── 💻 EC2 Instance 2
│ │ ├── 负载均衡配置
│ │ ├── 自动扩缩容
│ │ └── 故障转移
│ │
│ └── 🔒 私有子网 - 数据层 (Data Tier)
│ ├── 🗄️ RDS Primary
│ │ ├── MySQL 8.0
│ │ ├── 自动备份
│ │ └── 参数组配置
│ └── 🗄️ RDS Read Replica
│ ├── 读取负载分担
│ ├── 跨 AZ 部署
│ └── 延迟监控
│
└── 🔐 安全与监控层 (Security & Monitoring)
├── 🛡️ Security Groups
│ ├── 入站规则
│ ├── 出站规则
│ └── 端口控制
├── 🔍 CloudWatch
│ ├── 性能监控
│ ├── 日志聚合
│ └── 告警设置
└── 📊 CloudTrail
├── API 调用记录
├── 合规审计
└── 安全分析
📊 组件关系表
核心组件配置
| 组件类型 | 服务名称 | 实例规格 | 网络位置 | 主要功能 | 依赖关系 |
|---|---|---|---|---|---|
| CDN | CloudFront | Global | Internet | 内容分发 | S3, ALB |
| 存储 | S3 Bucket | Standard | Global | 静态资源 | CloudFront |
| 负载均衡 | ALB | – | Public Subnet | 流量分发 | EC2 Instances |
| 网关 | NAT Gateway | – | Public Subnet | 出站访问 | Private Subnet |
| 计算 | EC2 Instance 1 | t3.medium | Private Subnet | Web 服务 | RDS, S3 |
| 计算 | EC2 Instance 2 | t3.medium | Private Subnet | Web 服务 | RDS, S3 |
| 数据库 | RDS Primary | db.t3.micro | Private Subnet | 主数据库 | Read Replica |
| 数据库 | RDS Replica | db.t3.micro | Private Subnet | 只读副本 | Primary DB |
网络配置
| 网络层 | CIDR 块 | 可用区 | 路由表 | 安全组 |
|---|---|---|---|---|
| VPC | 10.0.0.0/16 | Multi-AZ | Main | VPC-SG |
| Public Subnet | 10.0.1.0/24 | us-east-1a | Public-RT | ALB-SG |
| Private Subnet 1 | 10.0.2.0/24 | us-east-1a | Private-RT | EC2-SG |
| Private Subnet 2 | 10.0.3.0/24 | us-east-1b | Private-RT | RDS-SG |
安全组规则
| 安全组 | 类型 | 协议 | 端口 | 源 | 描述 |
|---|---|---|---|---|---|
| ALB-SG | Inbound | HTTP | 80 | 0.0.0.0/0 | Web 流量 |
| ALB-SG | Inbound | HTTPS | 443 | 0.0.0.0/0 | 安全 Web 流量 |
| EC2-SG | Inbound | HTTP | 80 | ALB-SG | 来自 ALB |
| EC2-SG | Outbound | HTTPS | 443 | 0.0.0.0/0 | 外部 API |
| RDS-SG | Inbound | MySQL | 3306 | EC2-SG | 数据库访问 |
🌐 网络拓扑图
数据流向图
sequenceDiagram
participant U as 👤 用户
participant CF as ☁️ CloudFront
participant S3 as 📦 S3
participant ALB as ⚖️ ALB
participant EC2 as 💻 EC2
participant RDS as 🗄️ RDS
Note over U,RDS: 静态资源请求流程
U->>CF: 请求静态资源
CF->>S3: 缓存未命中,获取资源
S3-->>CF: 返回资源
CF-->>U: 返回缓存资源
Note over U,RDS: 动态内容请求流程
U->>CF: 请求动态内容
CF->>ALB: 转发到负载均衡器
ALB->>EC2: 分发到健康实例
EC2->>RDS: 查询数据库
RDS-->>EC2: 返回数据
EC2-->>ALB: 返回处理结果
ALB-->>CF: 返回响应
CF-->>U: 返回最终结果
故障转移流程
graph LR
subgraph "正常流程"
A[用户请求] --> B[ALB 健康检查]
B --> C[EC2-1 正常]
C --> D[处理请求]
end
subgraph "故障转移"
E[用户请求] --> F[ALB 检测故障]
F --> G[EC2-1 不健康]
G --> H[路由到 EC2-2]
H --> I[处理请求]
end
subgraph "数据库故障转移"
J[应用请求] --> K[RDS 主库故障]
K --> L[自动故障转移]
L --> M[提升只读副本]
M --> N[恢复服务]
end
🔧 部署和维护
自动化部署流程
graph TD
A[代码提交] --> B[CI/CD 触发]
B --> C[构建镜像]
C --> D[推送到 ECR]
D --> E[更新 ECS 服务]
E --> F[滚动更新]
F --> G[健康检查]
G --> H{部署成功?}
H -->|是| I[完成部署]
H -->|否| J[回滚版本]
J --> K[通知运维]
监控和告警
graph TB
subgraph "监控指标"
A[CPU 使用率]
B[内存使用率]
C[网络流量]
D[数据库连接数]
E[响应时间]
end
subgraph "告警规则"
F[CPU > 80%]
G[内存 > 85%]
H[响应时间 > 2s]
I[错误率 > 5%]
end
subgraph "通知渠道"
J[邮件通知]
K[短信告警]
L[Slack 消息]
end
A --> F
B --> G
E --> H
F --> J
G --> K
H --> L
📝 总结
这个 AWS 三层架构提供了:
- 高可用性: 多 AZ 部署,自动故障转移
- 可扩展性: Auto Scaling,负载均衡
- 安全性: VPC 隔离,安全组控制
- 性能优化: CDN 缓存,数据库读写分离
- 成本优化: 按需扩缩容,合理的实例规格
适用于中小型 Web 应用,支持高并发访问和数据安全要求。
文档版本: v1.0
最后更新: 2025-12-25
维护者: RJ.Wang