系统架构
关于系统架构
系统架构是构建高质量软件系统的基础。本模块涵盖系统设计原则、分布式系统、微服务、高可用、高性能等核心主题。
🏗️ 架构体系
01 - 系统设计
软件设计的核心原则和模式
02 - 分布式系统
构建可靠的分布式系统
- CAP/BASE 理论:一致性、可用性、分区容错
- 分布式锁:Redis、ZooKeeper 实现
- 分布式事务:2PC、3PC、Saga
03 - 高可用
保障系统的可用性
04 - 高性能
优化系统性能
05 - 微服务
构建可扩展的微服务架构
- 服务拆分:领域驱动设计
- API 设计:RESTful、GraphQL、gRPC
- 服务治理:服务发现、负载均衡
- Service Mesh:Istio、Linkerd
06 - 数据库架构
数据库设计和优化
07 - 缓存架构
提升系统性能的缓存策略
- 缓存模式:Cache-Aside、Write-Through、Write-Behind
- 缓存策略:LRU、LFU、过期策略
08 - 消息队列
构建异步和解耦的系统
- MQ 模式:点对点、发布订阅
- 可靠性保证:消息持久化、幂等性
09 - 安全
保障系统安全
- 认证与授权:OAuth、JWT
- 加密:对称加密、非对称加密
- 安全防护:SQL 注入、XSS、CSRF
10 - 可观测性
监控和诊断系统
- 日志:日志收集、分析
- 指标:监控指标、告警
- 链路追踪:分布式追踪
🎯 学习路径
mermaid
graph TB
A[系统设计原则] --> B[架构模式]
B --> C[分布式系统]
C --> D[微服务架构]
D --> E[高可用设计]
D --> F[高性能优化]
E --> G[可观测性]
F --> G💡 核心概念
架构设计原则
| 原则 | 说明 | 应用场景 |
|---|---|---|
| 单一职责 | 一个模块只做一件事 | 服务拆分、类设计 |
| 开闭原则 | 对扩展开放,对修改关闭 | 插件系统、策略模式 |
| 依赖倒置 | 依赖抽象而非实现 | 接口设计、依赖注入 |
| 高内聚低耦合 | 模块内部紧密,模块间松散 | 微服务设计 |
CAP 理论
CAP 定理
分布式系统最多只能同时满足以下三项中的两项:
- C (Consistency):一致性
- A (Availability):可用性
- P (Partition tolerance):分区容错性
常见选择:
- CP:ZooKeeper、HBase
- AP:Cassandra、DynamoDB
- CA:传统关系型数据库(单机)
微服务模式
┌─────────────────────────────────────────────────┐
│ API Gateway │
│ (认证、限流、路由、聚合) │
└──────────┬─────────┬─────────┬──────────────────┘
│ │ │
┌──────▼──┐ ┌───▼────┐ ┌▼──────────┐
│ 用户服务 │ │订单服务│ │ 支付服务 │
└──────┬──┘ └───┬────┘ └┬──────────┘
│ │ │
┌──────▼─────────▼─────────▼──────────┐
│ 服务注册与发现中心 │
│ (Consul / Eureka) │
└─────────────────────────────────────┘🔧 实践建议
1. 架构设计
- ✅ 从业务出发,不要过度设计
- ✅ 优先考虑可维护性而非性能
- ✅ 使用成熟的技术栈
- ✅ 保持架构的演进性
2. 性能优化
优化顺序
- 数据库优化:索引、查询优化
- 缓存:Redis、CDN
- 异步化:消息队列
- 水平扩展:分库分表、负载均衡
3. 高可用保障
可用性级别:
- 99.9% (3 个 9) → 年停机时间 8.76 小时
- 99.99% (4 个 9) → 年停机时间 52.56 分钟
- 99.999% (5 个 9) → 年停机时间 5.26 分钟实现手段:
- 负载均衡
- 主从切换
- 熔断降级
- 限流保护
📚 经典案例
秒杀系统设计
挑战:
- 瞬时高并发
- 库存超卖
- 用户体验
解决方案:
用户请求
↓
【前端】
- 按钮防重复点击
- 验证码
↓
【接入层】
- CDN 静态资源
- Nginx 限流
↓
【应用层】
- Redis 预减库存
- 消息队列削峰
↓
【数据层】
- MySQL 扣减库存(乐观锁)
- 订单异步处理海量数据处理
场景:10 亿条用户数据查询
方案:
- 分库分表:按用户 ID hash
- 索引优化:建立合适的索引
- 读写分离:主库写,从库读
- 缓存:热点数据放 Redis
- ES 搜索:复杂查询用 Elasticsearch
🚀 进阶资源
开始你的架构师之旅!🏗️
💬 讨论
使用 GitHub 账号登录后即可参与讨论