# 第38天:知识体系总复习——串联所有知识点 ## 今天你将学到什么 今天用结构化的方式回顾过去 37 天学到的所有内容,帮你建立完整的 AWS 知识地图。这不是简单的重复,而是从更高的视角看各个服务之间的关系。 --- ## AWS 服务全景图 ### 按功能分类 ``` 计算 ├── EC2(虚拟服务器) ├── Lambda(无服务器函数) ├── ECS / EKS(容器) └── Fargate(无服务器容器) 存储 ├── S3(对象存储) ├── EBS(块存储,EC2 硬盘) ├── EFS(文件存储,共享) └── S3 Glacier(归档) 数据库 ├── RDS / Aurora(关系型) ├── DynamoDB(NoSQL) └── ElastiCache(缓存) 网络 ├── VPC(虚拟网络) ├── ALB / NLB(负载均衡) ├── Route 53(DNS) ├── CloudFront(CDN) └── VPC Endpoint / PrivateLink 安全 ├── IAM(身份与访问) ├── KMS(加密密钥) ├── Secrets Manager(密码管理) ├── WAF / Shield(Web 防护) ├── GuardDuty(威胁检测) └── CloudTrail(审计日志) 应用集成 ├── SQS(消息队列) ├── SNS(通知服务) ├── EventBridge(事件总线) ├── Step Functions(工作流) └── API Gateway(API 管理) 开发工具 ├── CodePipeline(CI/CD 流水线) ├── CodeBuild(构建) ├── CodeDeploy(部署) └── CloudFormation(基础设施即代码) 监控与管理 ├── CloudWatch(监控、日志、告警) ├── AWS Config(配置合规) ├── Trusted Advisor(优化建议) └── Cost Explorer / Budgets(成本管理) ``` --- ## 核心架构模式 ### 模式一:经典 Web 应用 ``` Route 53 → CloudFront → ALB → Auto Scaling (EC2) → RDS Multi-AZ ``` **适合**:传统 Web 应用、需要完全控制的场景 ### 模式二:无服务器应用 ``` Route 53 → CloudFront → API Gateway → Lambda → DynamoDB ``` **适合**:API 后端、事件驱动、流量不稳定的应用 ### 模式三:容器化微服务 ``` Route 53 → ALB → ECS Fargate (多个服务) → Aurora + DynamoDB + Redis → SQS/SNS (异步通信) ``` **适合**:中大型应用、需要独立部署和扩展的微服务 ### 模式四:事件驱动架构 ``` 事件源 → EventBridge → Lambda / Step Functions → 各种目标服务 ``` **适合**:松耦合系统、异步处理、复杂业务流程 --- ## 服务选择决策树 ### 计算服务怎么选 ``` 需要运行代码? ├── 运行时间 < 15 分钟? │ ├── 是 → Lambda │ └── 否 ↓ ├── 需要容器? │ ├── 是 → 想管服务器吗? │ │ ├── 不想 → Fargate │ │ └── 想要控制 → ECS on EC2 │ └── 否 ↓ └── 需要虚拟机 → EC2 ``` ### 数据库怎么选 ``` 需要存储数据? ├── 需要复杂查询(JOIN、事务)? │ ├── 是 → RDS / Aurora │ └── 否 ↓ ├── 键值查询、高频读写? │ ├── 是 → DynamoDB │ └── 否 ↓ ├── 需要缓存加速? │ ├── 是 → ElastiCache (Redis) │ └── 否 ↓ └── 全文搜索? → OpenSearch ``` ### 存储怎么选 ``` 需要存储文件? ├── 文件需要被多台服务器共享? │ ├── 是 → EFS │ └── 否 ↓ ├── 通过 HTTP 访问(图片、视频、备份)? │ ├── 是 → S3 │ └── 否 ↓ ├── EC2 的硬盘? │ └── 是 → EBS └── 归档(很少访问)? → S3 Glacier ``` ### 消息服务怎么选 ``` 需要服务间通信? ├── 一条消息只需要一个消费者处理? │ ├── 是 → SQS │ └── 否 ↓ ├── 一条消息需要多个消费者同时收到? │ ├── 是 → SNS(配合 SQS 做扇出) │ └── 否 ↓ └── 需要基于事件内容路由到不同目标? └── 是 → EventBridge ``` --- ## 关键概念速查 ### 高可用相关 | 概念 | 含义 | 实现 | |------|------|------| | Multi-AZ | 跨可用区部署 | RDS Multi-AZ、ALB 跨 AZ | | Auto Scaling | 自动增减实例 | EC2 Auto Scaling Group | | 负载均衡 | 流量分发 | ALB / NLB | | 健康检查 | 自动发现故障 | ALB / Route 53 健康检查 | | 故障转移 | 自动切换到备用 | RDS 故障转移、Route 53 故障转移路由 | ### 安全相关 | 概念 | 含义 | 实现 | |------|------|------| | 最小权限 | 只给必要的权限 | IAM 策略精确控制 | | 纵深防御 | 多层防护 | WAF + 安全组 + 网络 ACL | | 加密一切 | 数据加密存储和传输 | KMS + HTTPS | | 审计追踪 | 记录所有操作 | CloudTrail | | 密码管理 | 不硬编码密码 | Secrets Manager | ### 成本相关 | 概念 | 含义 | 实现 | |------|------|------| | 按需付费 | 用多少付多少 | 默认定价模式 | | 预留折扣 | 承诺使用换折扣 | Savings Plans / Reserved Instances | | Spot 实例 | 用闲置资源省钱 | 可中断的工作负载 | | 自动扩缩 | 不过度预置 | Auto Scaling | | 存储分层 | 不同访问频率用不同存储 | S3 生命周期策略 | --- ## 常见场景与解决方案 | 场景 | 解决方案 | |------|----------| | 网站需要全球快速访问 | CloudFront + S3(静态)/ ALB(动态) | | 应用需要处理突发流量 | Auto Scaling + SQS 削峰 | | 数据库读取压力大 | ElastiCache 缓存 + Aurora 只读副本 | | 需要定时执行任务 | EventBridge 定时规则 + Lambda | | 文件上传后需要处理 | S3 事件通知 → Lambda | | 多个服务需要协调 | Step Functions 编排 | | 需要实时通知用户 | SNS + 移动推送 / WebSocket | | 需要搜索功能 | OpenSearch | | 需要用户认证 | Cognito | | 需要 API 管理 | API Gateway | --- ## 架构设计原则总结 ### 十大原则 1. **为故障设计**:假设一切都会坏,设计自动恢复机制 2. **解耦组件**:用消息队列和事件让服务松耦合 3. **弹性伸缩**:根据负载自动调整资源 4. **安全优先**:加密一切、最小权限、纵深防御 5. **自动化一切**:基础设施即代码、CI/CD、自动化运维 6. **使用托管服务**:能用托管的就不自建 7. **缓存加速**:在各层添加缓存减少延迟 8. **异步处理**:不需要立即结果的操作异步执行 9. **监控一切**:没有监控就是盲人开车 10. **持续优化**:定期审查架构和成本 --- ## 学习路径回顾 ``` 第一阶段(第 1-7 天):基础概念 云计算 → AWS 账户 → IAM → CLI 第二阶段(第 8-19 天):核心服务 EC2 → Lambda → S3 → 数据库 → VPC → DNS/CDN → 消息服务 第三阶段(第 20-25 天):安全 IAM 策略 → 加密 → WAF/Shield → CloudTrail → VPC 安全 第四阶段(第 26-32 天):应用架构 容器 → ECS → CI/CD → Step Functions → API Gateway → 微服务 第五阶段(第 33-36 天):监控与运维 CloudWatch → 成本管理 → Well-Architected → 故障排查 第六阶段(第 37-40 天):进阶与认证 认证体系 → 知识总复习 → 实战项目 → 持续学习 ``` --- ## 今天的小测验 1. 如果要设计一个高可用的 Web 应用,至少需要哪些 AWS 服务? 2. Lambda 和 EC2 各自适合什么场景? 3. SQS、SNS、EventBridge 三者的区别是什么? 4. 说出 Well-Architected Framework 的五大支柱。 --- ## 延伸阅读 - [AWS 服务概览](https://aws.amazon.com/products/) - [AWS 架构中心](https://aws.amazon.com/architecture/) - [AWS 解决方案库](https://aws.amazon.com/solutions/) --- ## 明天预告 明天是实战项目日——从零开始设计并规划一个完整的云原生应用,综合运用所有学到的知识。