我需要执行一堆HTTP请求,然后对结果数据进行一堆处理。它变得非常密集,以至于我无法再在一台服务器上可靠地完成它,因此除了主要的一个之外,我还创建了另外两个Linode VPS,以分散工作负荷。
基本上,工作是主服务器向其他服务器发送一堆命令,其中包括一个HTTP请求以及如何处理结果,然后其他服务器执行提取,操作数据然后将其存储在中央数据库。
现在可以正常工作,但是工作量正在增加,我需要尽快启动另一个VPS,而且配置令人讨厌。
有更好的方法吗?一种自动创建所需服务器的方法,这不是很难理解吗?创建新的VPS很容易,而且很耗时。
答案 0 :(得分:2)
在AWS中,您可以使用SQS队列来分离工作负载。这本身似乎不太有用,但是您也可以创建一个EC2自动缩放组,该组根据SQS队列中等待消息的增加或减少进行缩放。这样一来,您可以根据需要启动更多EC2实例,但在不使用它们时也可以终止它们,以降低成本。有关更多信息,您可以在这里查看:https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html
答案 1 :(得分:1)
如果您的http请求和处理时间保持最短(少于15分钟),AWS Lambda是一个不错的选择。需要零基础设施/自动缩放配置,并且启动和运行代码非常简单。您只需要以多种语言之一上传代码,然后添加一个启动您的功能的触发器即可。
另一种选择是使用AWS Batch在可扩展数量的实例上分配作业。您将使用您希望实例发出的请求填充“批处理作业队列”。然后,批处理通过将运行命令传递到根据您的作业定义自动缩放数量的实例上运行的容器来运行“作业”。
设置批处理环境仅需极少的配置(设置cpu,mem等的最大/最小配置值),但确实需要将应用程序作为docker映像存储在ECR中。正确设置批处理环境后,几乎不需要配置和维护。