REL 7: 您如何设计工作负载,以适应不断变化的需求?
可扩展工作负载具有自动添加或移除资源的弹性,因此确保在任何时间点都能准确满足当前的需求。
资源
AWS Auto Scaling: How Scaling Plans Work
What Is Amazon EC2 Auto Scaling?
Managing Throughput Capacity Automatically with DynamoDB Auto Scaling
What is Amazon CloudFront?
Distributed Load Testing on AWS: simulate thousands of connected users
Telling Stories About Little's Law
AWS Marketplace: products that can be used with auto scaling
APN Partner: partners that can help you create automated compute solutions
最佳实践:
-
在获取或扩展资源时利用自动化: 在替换被破坏的资源或扩展您的工作负载时,通过采用托管 AWS 服务(如 Amazon S3 和 AWS Auto Scaling)对流程进行自动化。您还可以使用第三方工具和 AWS 开发工具包自动扩展。
-
在检测到对工作负载的破坏时获取资源: 如果可用性受到影响,在必要时被动扩展资源,从而还原工作负载的可用性。
-
当检测到某个工作负载需要更多资源时,就会获取资源: 主动扩展资源以满足需求并避免影响可用性。
-
对工作负载进行负载测试: 采用负载测试方法来衡量扩展活动能否满足工作负载要求。
改进计划
在获取或扩展资源时利用自动化
What is AWS Auto Scaling?
- 在 Amazon EC2 实例和 Spot Fleets、Amazon ECS 任务、Amazon DynamoDB 表和索引、Amazon Aurora Replicas
和 AWS Marketplace 设备(如果适用)上配置 Auto Scaling。
Managing throughput capacity automatically with DynamoDB Auto Scaling- 使用服务 API 操作来指定警报、扩展策略、预热时间和冷却时间。
What is Elastic Load Balancing?
- Application Load Balancer 可以按路径分配负载。
What is an Application Load Balancer?- 配置 Application Load Balancer,根据域名下的路径将流量分配给不同的工作负载。
- Application Load Balancer 可以与 AWS Auto Scaling 集成来分配负载,以便管理需求。
Using a load balancer with an Auto Scaling group
- 网络负载均衡器可以按连接分配负载。
What is a Network Load Balancer?- 配置网络负载均衡器,以便使用 TCP 将流量分配给不同的工作负载,或者为工作负载指定一组恒定的 IP 地址。
- 网络负载均衡器可以与 AWS Auto Scaling 集成来分配负载,以便管理需求。
- 使用 Amazon Route 53 或可信任的 DNS 提供商
What is Amazon Route 53? - 使用 Route 53 管理 CloudFront 分配和负载均衡器。
- 确定要管理的域和子域。
- 使用 ALIAS 或 CNAME 记录来创建适当的记录集。
Working with records
- AWS Global Accelerator 是一项可帮助本地或全球用户提高应用程序可用性和性能的服务。它提供的静态 IP 地址可用作从单个或多个 AWS 区域(例如
Application Load Balancer、网络负载均衡器或 Amazon EC2 实例)访问应用程序终端节点的固定入口点。
What Is AWS Global Accelerator?
What is Amazon CloudFront?
- 针对您的工作负载配置 Amazon CloudFront 分配,或者使用第三方 CDN。
- 您可以通过在终端节点安全组或访问策略中使用 CloudFront 的 IP 范围,将对工作负载的访问限制为只能从 CloudFront 访问。
在检测到对工作负载的破坏时获取资源
- 使用扩展计划,这是 AWS Auto Scaling 的核心组件。它可以在此配置一组资源扩展说明。如果使用 AWS CloudFormation 或为 AWS 资源添加标签,您可以根据应用程序为不同的资源集设置扩展计划。AWS
Auto Scaling 提供了针对每个资源的定制扩展策略建议。创建扩展计划后,AWS Auto Scaling 结合了动态扩展和预测性扩展方法以支持扩展策略。
AWS Auto Scaling: How Scaling Plans Work - Amazon EC2 Auto Scaling 有助于确保您拥有适量的 Amazon EC2 实例,可处理您的应用程序负载。您可创建 EC2 实例集合,称为 Auto
Scaling 组。您可以指定每个 Auto Scaling 组中的最小实例数量,Amazon EC2 Auto Scaling 会确保您组中的实例绝不会低于该数量。您可以指定每个
Auto Scaling 组中的最大实例数量,Amazon EC2 Auto Scaling 会确保您组中的实例绝不会高于该数量。
What Is Amazon EC2 Auto Scaling? - Amazon DynamoDB Auto Scaling 使用 AWS Application Auto Scaling 服务,代表您动态调整预置的吞吐容量,以响应实际的流量模式。这将使表或全局二级索引提高预置读取和写入容量,从而不受限制地应对流量突增。
Managing Throughput Capacity Automatically with DynamoDB Auto Scaling
当检测到某个工作负载需要更多资源时,就会获取资源
- 计算处理给定请求速率需要多少计算资源(计算并发)
Telling Stories About Little's Law - 当您具有可使用的历史模式时,请为 Amazon EC2 Auto Scaling 设置计划扩展
Scheduled Scaling for Amazon EC2 Auto Scaling - 使用 AWS 预测扩展
Predictive Scaling for EC2, Powered by Machine Learning
对工作负载进行负载测试
Distributed Load Testing on AWS: simulate thousands of connected users
- 确定请求组合: 您可能拥有不同的请求组合,因此应当在确定流量组合时查看不同的时间范围。
- 实施负载驱动程序: 您可以使用自定义代码、开源或商用软件来实施负载驱动程序。
- 最初使用小容量进行负载测试: 通过将负载降低到较小容量(可能小到一个实例或容器),可能会有立竿见影的效果。
- 针对更大的容量进行负载测试: 分布式负载的效果会有所不同,因此您必须对尽量接近生产环境的目标进行测试。