设计高性能和弹性计算解决方案

发布: (2026年2月7日 GMT+8 19:19)
8 分钟阅读
原文: Dev.to

Source: Dev.to

⚡ 域 3:设计高性能架构

📘 任务说明 3.2

设计高性能且弹性的计算解决方案 是指选择能够:

  • 表现良好
  • 自动扩展
  • 通过解耦组件避免瓶颈

方法

  1. 首先选择计算运行时 – EC2 与容器或无服务器。
  2. 选择扩展模型 – 自动伸缩(Auto Scaling)或基于事件的扩展。
  3. 调优性能 – 实例系列 / 内存 / 并发 / 批处理。

知识

1️⃣ AWS 计算服务及适用场景

服务最适合的场景
Amazon EC2• 完全控制操作系统/运行时
• 传统应用、自定义网络/代理、特殊驱动
• 可预测的长期运行服务
AWS Lambda• 事件驱动任务(API、SQS 处理、EventBridge、文件处理)
• 流量波动大或不可预测
• 运维工作最小化
Amazon ECS / Amazon EKS(容器)• 微服务和长期运行的容器工作负载
• 标准化打包与可预测的弹性伸缩
• 当 Lambda 的限制(超时、运行时、依赖)不适用时
AWS Fargate(无服务器容器)• 无需管理 EC2 实例的容器
• 常见的“高性能 + 弹性”容器化应用方案
AWS Batch• 批处理作业、大规模作业队列、计算密集型处理
• 自动为作业提供计算资源(通常是 EC2 / Spot)
Amazon EMR• 大数据处理框架(Spark、Hadoop)
• 分布式 ETL / 分析工作负载
Spark/Hadoop → EMR
“运行 10,000 个批处理作业” → Batch

2️⃣ 通过全球基础设施与边缘服务支持的分布式计算概念

  • 多可用区(Multi‑AZ)架构 可降低单个可用区故障的影响,并实现横向扩展。
  • 边缘服务 可降低终端用户的延迟。

常见的边缘与全球服务

  • CloudFront – 缓存与边缘交付。
  • Global Accelerator – 为 TCP/UDP 应用提供 Anycast 路由。

3️⃣ 队列与消息(Pub/Sub)概念

服务角色
SQS解耦生产者 / 消费者;根据队列深度扩展工作者。
SNSPub/Sub 扇出。
EventBridge事件路由。

4️⃣ 可伸缩性能力

  • EC2 Auto Scaling – 在 Auto Scaling 组(ASG)中自动扩展 EC2 实例。
  • AWS Auto Scaling – 为多种服务提供伸缩(ECS、DynamoDB、Aurora 副本等)。

5️⃣ 无服务器技术与模式

服务伸缩机制
Lambda按并发数伸缩;可事件驱动且具突发能力。
Fargate在无需管理服务器的情况下伸缩容器;伸缩由 ECS/EKS 配置驱动。

6️⃣ 容器编排

Amazon ECS(AWS 原生)概念:

  • Cluster → Service → Tasks
  • Task definition 为蓝图。

Amazon EKS(Kubernetes)概念:

  • Cluster → Deployments → Pods

如果不需要 Kubernetes,ECS 通常更简洁。

技能

A️⃣ 将工作负载解耦,使组件能够独立扩展

解耦模式

  1. SQS 用于 Web 层与工作者之间——缓冲突发、重试、死信队列(DLQ)。
  2. SNS 向多个消费者进行扇出。
  3. EventBridge 用于事件驱动的集成。
  4. Step Functions 在需要协调时用于编排。

前端 随流量扩展;工作者 随队列深度扩展。

B️⃣ 确定用于执行扩展操作的指标和条件

常见扩展信号

  1. CPU / 内存(EC2/ECS)。
  2. 请求数 / 目标响应时间(ALB 目标指标)。
  3. 队列深度 / 最旧消息的年龄(基于 SQS 的工作者扩展)。
  4. Lambda 并发 / 持续时间 / 限流
  5. 自定义 CloudWatch 指标(业务驱动的扩展,例如 “等待的作业”)。

C️⃣ 选择合适的计算选项和特性以满足业务需求

EC2 实例类型

系列典型用途
t, m通用型
c计算密集型
r, x内存密集型
i存储 / IOPS 密集型
p, gGPU / 机器学习 / 图形

其他 EC2 选项

  • Spot 实例——容错工作负载(批处理、无状态、灵活)。
  • Graviton(Arm)——性价比优势。

D️⃣ 选择合适的资源类型和规模以满足业务需求

Lambda 内存

  1. 内存还决定 CPU 分配。
  2. 当执行时间过慢时提升内存(通常能提升性能)。
  3. 关注限流和并发限制。

容器内存

  1. 为任务/Pod 合理配置 CPU 和内存。
  2. 在可能的情况下,通过增加任务数量而不是单个任务的过度配置来扩展。

Cheat Sheet

需求计算
事件驱动,流量波动大,运维最少Lambda
运行容器而无需管理服务器ECS on Fargate
必须使用 KubernetesEKS
需要操作系统控制 / 传统应用EC2 (+ Auto Scaling)
运行大量批处理作业 / 作业队列AWS Batch
Spark/Hadoop 大数据处理EMR
根据积压自动扩展工作节点SQS + autoscaled consumers
需要全球性能提升CloudFront / Global Accelerator

回顾检查清单 ✅

  • 工作负载已解耦,使组件能够独立扩展(队列/事件)。
  • 计算选择符合运行时需求(EC2 与容器 与无服务器)。
  • 扩展策略明确(自动伸缩、基于队列、基于事件)。
  • 扩展指标选择得当(CPU、请求数、队列深度、并发数)。
  • EC2 实例根据工作负载特性选择(计算/内存/存储/GPU)。
  • Lambda/容器资源尺寸合适(内存、CPU、任务数)。

AWS 白皮书和官方文档

这些是 Task Statement 3.2 背后的主要 AWS 文档。

不需要 记住它们;请使用它们来了解 如何 设计高性能且弹性的计算解决方案

关键领域

  • 计算服务
  • 伸缩
  • 解耦与消息传递
  • 边缘和全球性能

🚀

0 浏览
Back to Blog

相关文章

阅读更多 »

UX/UI 排版

Typography 是指什么?- 使用哪种字体 - 在什么位置多大 - 多粗 - 行间距 - …