架构设计五大维度 学习笔记
一、架构设计五大维度概述
1.1 五大维度总览
架构设计需要着重关注的五个核心维度:
code
架构设计五大维度
├── 1. 扩展性 (Scalability)
├── 2. 高性能 (High Performance)
├── 3. 高可用 (High Availability)
├── 4. 高安全 (High Security)
└── 5. 伸缩性 (Elasticity)1.2 各维度核心要点
| 维度 | 核心问题 | 学习重点 | 应用场景 |
|---|---|---|---|
| 扩展性 | 业务量增长如何应对? | 水平/垂直扩展 | 业务快速增长阶段 |
| 高性能 | 如何实现高并发? | 性能优化、妥协策略 | 高流量、实时性要求高 |
| 高可用 | 如何避免服务中断? | 本地高可用、异地容灾、多活 | 对稳定性要求极高的系统 |
| 高安全 | 如何保障系统安全? | 安全流程、安全架构 | 涉及敏感数据、金融交易 |
| 伸缩性 | 如何应对流量波动? | 弹性扩容/缩容 | 流量波动大的场景 |
二、扩展性架构
2.1 扩展架构核心概念
扩展架构分为两大方向:
- 应用扩展 - 业务逻辑层的扩展
- 数据扩展 - 数据存储层的扩展
2.2 扩展策略对比
| 扩展方式 | 定义 | 核心优势 | 适用场景 |
|---|---|---|---|
| 水平扩展 | 复制应用实例 | 弹性扩缩容、实施简单 | 无状态服务、流量突发增长 |
| 垂直扩展 | 拆分业务模块 | 服务独立、资源优化、数据一致性 | 有状态服务、复杂业务系统 |
2.3 最佳实践:组合策略
推荐策略:先垂直拆分,再水平扩展
code
架构演进路径:
单体架构 → 垂直拆分(微服务)→ 水平扩展(集群部署)
示例:
1. 将单体应用拆分为用户、订单、支付服务(垂直拆分)
2. 订单服务流量大,部署多个实例(水平扩展)
3. 支付服务独立部署,保障数据一致性(垂直扩展优势)详细内容请参考:07-伸缩性架构.md
三、高性能架构
3.1 高性能核心概念
定义:系统在单位时间内处理更多请求的能力
关键指标:
- 响应时间:用户请求到响应的时间
- 吞吐量:单位时间处理的请求数(QPS/TPS)
- 并发数:同时处理的请求数
3.2 核心策略
| 策略 | 说明 | 示例 |
|---|---|---|
| 异步处理 | 快速响应用户,后台处理 | 订单提交后立即返回,后台处理 |
| 缓存策略 | 多级缓存减少数据库压力 | 浏览器缓存、CDN、Redis、数据库缓存 |
| 降级服务 | 高峰期关闭非核心功能 | 双十一关闭推荐功能 |
| 限流熔断 | 保护系统不过载 | 超过阈值返回排队页面 |
| 预加载 | 提前加载可能需要的资源 | 首页预加载详情页数据 |
详细内容请参考:03-高性能架构.md
四、高可用架构
4.1 高可用核心概念
目标:系统持续提供服务的能力,通常用 SLA(Service Level Agreement)衡量
可用性指标:
code
SLA 等级:
- 99.9% = 年停机时间 ≤ 8.76 小时
- 99.99% = 年停机时间 ≤ 52.6 分钟
- 99.999% = 年停机时间 ≤ 5.26 分钟4.2 高可用方案对比
| 方案 | 核心思想 | 适用场景 | 成本 |
|---|---|---|---|
| 本地高可用 | 同一机房内主备切换 | 中小型系统 | 低 |
| 异地容灾 | 主备数据中心异地部署 | 对稳定性要求高的系统 | 中 |
| 多活架构 | 多个业务系统同时服务 | 超大规模系统 | 高 |
4.3 架构演进路径
code
高可用架构演进:
阶段一:本地高可用
├── 负载均衡器(Keepalived + VIP)
├── Web服务器集群(主备)
└── MySQL主从复制
阶段二:异地容灾
├── 北京数据中心(主)
├── 上海数据中心(备)
└── DNS智能解析
阶段三:多活架构
├── 北京机房
├── 上海机房
├── 广州机房
└── 全局负载均衡 + 数据同步层详细内容请参考:04-高可用架构.md、05-异地容灾与多活架构.md
五、高安全架构
5.1 安全架构核心要素
code
安全架构体系:
├── 网络安全
│ ├── 防火墙
│ ├── DDoS 防护
│ └── WAF
├── 应用安全
│ ├── 身份认证
│ ├── 权限控制
│ └── 数据加密
├── 数据安全
│ ├── 传输加密
│ ├── 存储加密
│ └── 备份恢复
└── 运维安全
├── 审计日志
├── 漏洞扫描
└── 应急响应5.2 多层安全防护
| 安全层级 | 防护措施 | 技术方案 |
|---|---|---|
| 网络层 | 防火墙、DDoS防护、WAF | IP白名单/黑名单、流量清洗 |
| 应用层 | 身份认证、权限控制、安全验证 | JWT、RBAC、CSRF Token、XSS过滤 |
| 数据层 | 传输加密、存储加密、备份 | HTTPS、AES加密、异地备份 |
详细内容请参考:06-高安全架构.md
六、伸缩性架构
6.1 伸缩性核心概念
定义:系统根据负载自动调整资源的能力
两大方向:
- 弹性扩容:负载增加时自动增加资源
- 弹性缩容:负载减少时自动释放资源
6.2 弹性伸缩类型
| 伸缩类型 | 说明 | 技术方案 |
|---|---|---|
| 水平自动伸缩(HPA) | 自动增减应用实例数 | Kubernetes HPA |
| 垂直自动伸缩(VPA) | 自动调整资源配额 | Kubernetes VPA |
| 集群自动伸缩(CA) | 自动增减节点数 | Kubernetes CA |
6.3 弹性伸缩流程
code
弹性伸缩流程:
监控指标 → 达到阈值 → 计算所需资源 → 申请资源 → 部署新实例 → 加入负载均衡 → 开始服务详细内容请参考:07-伸缩性架构.md
七、实战案例:电商平台架构演进
7.1 第一阶段:单体架构
code
初期架构(日活 1000)
┌─────────────────┐
│ 单体应用 │
├─────────────────┤
│ 用户、订单、支付 │
│ 内容、消息 │
└─────────────────┘
│
▼
单台 MySQL