我需要根据一个HTTP请求运行一个Windows可执行文件。这个过程是重计算的,因此需要很大的处理能力。到目前为止,我正在使用AWS ec2实例来运行这些执行程序。C5.2xlarge,windows EC2实例。
这些请求并不频繁,但必须在没有延迟的情况下被服务。
这里的问题是
有没有可能让它的效率更高?只为执行而不是空闲时间付费。对架构的改变有什么建议吗?即使在其他云平台上也能为我们工作.注:我无法弄清楚AWS Lambda或Batch处理是否可以用于这种场景。
我建议改变一下架构,以方便你的情况,并节省一些费用。
AWS Fargate.
他们的解决方案架构师是这样描述的。
AWS Fargate是在AWS上部署容器的一个简单方法。简单来说,Fargate就像EC2一样,但不是给你一个虚拟机,而是给你一个容器。它是一个计算引擎,允许你使用容器作为基本的计算基元,而不必管理底层实例。
Fargate服务允许你按需运行容器。有点像容器的无服务器。
假设你有容器的知识(或者可以学习)--你要做的就是创建一个基于windows的容器镜像,它将包含所有你需要的可执行文件。
一旦创建,你就把它上传到AWS ECR(Elastic Container Registry),你的镜像构建将被存储在那里,然后,在ECS Fargate(ECS = Elastic Container Service)中设置一个新的服务,指定CPU和内存需求。
一旦所有的设置都正确,所有的工作都在进行中--你将能够像使用Lambda那样启动容器。Fargate会收到你的请求,启动容器,进行计算工作,完成后就会关闭。