SUS03-BP01 针对异步和计划作业优化软件和架构
使用高效的软件和架构模式(如队列驱动)来保持所部署资源的始终如一的高利用率。
常见反模式:
-
为了应对不可预见的需求高峰,您过度预置云工作负载中的资源。
-
架构不会通过消息传递组件分离异步消息的发送方和接收方。
建立此最佳实践的好处:
-
高效的软件和架构模式可以最大程度地减少工作负载中未使用的资源,并提高整体效率。
-
可以独立于异步消息的接收来扩展处理。
-
通过消息传递组件,可以放宽可用性要求,从而能够用更少的资源来满足这些要求。
在未建立这种最佳实践的情况下暴露的风险等级:中
实施指导
使用高效的架构模式,例如事件驱动型架构
了解工作负载组件的要求,并采用可提高资源总体利用率的架构模式。停用不再需要的组件。
实施步骤
-
分析工作负载的需求,以确定如何响应这些需求。
-
对于不需要同步响应的请求或作业,请使用队列驱动型架构和自动扩缩工作线程来最大限度地提高利用率。以下是一些可以考虑采用队列驱动型架构的示例:
排队机制 描述 AWS Batch 作业将提交到作业队列,并一直驻留在队列中,直到可以计划在计算环境中运行。
将 Amazon SQS 实例和竞价型实例配对,构建容错又高效的架构。
-
对于可以随时处理的请求或作业,请使用调度机制批量处理作业以提高效率。以下是 AWS 上的调度机制的一些示例:
调度机制 描述 Amazon EventBridge
的一项功能,使您能够大规模创建、运行和管理调度任务。 在 AWS Glue 中为爬网程序和作业定义基于时间的计划。
Amazon ECS 支持创建计划任务。计划任务使用 Amazon EventBridge 规则按计划或响应 EventBridge 事件时运行任务。
为您的 Amazon EC2 和 Amazon Relational Database Service 实例配置启动和停止计划。
-
如果在架构中使用轮询和 Webhook 机制,请将它们替换为事件。使用事件驱动型架构来构建高效的工作负载。
-
利用 AWS 上的无服务器架构
消除过度预置的基础设施。 -
适当调整架构中各个组件的大小,以防止等待输入的闲置资源。
-
您可以使用 AWS Cost Explorer 中的合理调整大小建议或 AWS Compute Optimizer
来确定合理调整大小的机会。 -
有关更多详细信息,请参阅《合理调整大小:预置实例以匹配工作负载》。
-
资源
相关文档:
相关视频:
-
AWS re:Invent 2023 - Navigating the journey to serverless event-driven architecture
-
AWS re:Invent 2023 - Using serverless for event-driven architecture & domain-driven design
-
AWS re:Invent 2023 - Advanced event-driven patterns with Amazon EventBridge
-
AWS re:Invent 2023 - Sustainable architecture: Past, present, and future
相关示例: