AWS:按需运行计算繁重的进程(Windows 可执行文件)

Posted

技术标签:

【中文标题】AWS:按需运行计算繁重的进程(Windows 可执行文件)【英文标题】:AWS: Running Computation Heavy processes (Windows executable) on-demand 【发布时间】:2020-05-14 15:50:25 【问题描述】:

我需要基于 HTTP 请求运行 Windows 可执行文件。该过程计算量很大,因此需要很大的处理能力。到目前为止,我正在使用 AWS ec2 实例来运行这些执行。 C5.2xlarge,windows EC2 实例。

这些请求并不频繁,但必须立即处理。

这里的问题是

我们浪费了很多钱,只是为了让这个繁重的实例继续运行以应对那些突然的请求。 此可执行文件没有 Linux 替代方案。

是否可以提高效率?只为执行而不是空闲时间付费。 对架构更改有什么建议吗?即使在其他云平台上也适用于我们。 注意:我不知道 AWS Lambda 或批处理是否适用于这种情况。

【问题讨论】:

【参考方案1】:

我建议稍微改变一下架构以方便您的案例并节省一些钱:

AWS Fargate。

他们的解决方案架构师是这样描述的:

AWS Fargate 是一种在 AWS 上部署容器的简单方法。简单地说,Fargate 就像 EC2,但不是给你一个虚拟机,而是一个容器。它是一个计算引擎,允许您将容器用作基本计算原语,而无需管理底层实例。

Fargate 服务允许您按需运行容器。一种用于容器的无服务器。

假设您了解容器(或可以学习) - 您所要做的就是创建一个带有基于 Windows 的映像的容器,该容器将包含您需要的所有可执行文件。

创建后,您将其上传到 AWS ECR(Elastic Container Registry),您的镜像构建将在其中存储,然后在 ECS Fargate(ECS = Elastic Container Service)中设置新服务,指定 CPU 和内存要求。

一旦一切设置正确并且一切正常 - 您将能够像使用 Lambda 一样启动容器。 Fargate 将收到您的请求,启动容器,执行计算工作,并在完成后关闭。

【讨论】:

感谢吉拉德的建议。让我试试这个解决方案。从理论上讲,如果定价按照您的建议进行,它看起来是可行的。任何想法,集装箱装载的平均时间是多少?只是为了检查我为每个请求添加了多少延迟。 大约 40 秒的冷启动

以上是关于AWS:按需运行计算繁重的进程(Windows 可执行文件)的主要内容,如果未能解决你的问题,请参考以下文章

如何识别正在运行的进程

AWS AutoScaling,缩减 - 等待进程终止

在 Windows Azure 中运行SuperSocket

云平台概述

玩转 AWS EC2 不得不了解的那些实例购买选项

玩转 AWS EC2 不得不了解的那些实例购买选项